CustomToken 인증을 할 때 IAM이 관련되는 케이스와 그 대응
4308 단어 IAMauthenticationFirebasegcp
이 기사에 대하여
Firebase/Authentication에서 CustomToken 인증을 수행하는 경우
Token의 작성 방법은 크게 3개 있어 각각의 작성 방법의 메리데메(느끼는 것 베이스)나
Admin SDK에서 서비스 계정을 찾는 방법을 사용하는 경우 IAM 설정이 필요하며 실제 대응 시에 만난 오류나 느낌을 기사로 했습니다.
CustomToken 인증을 사용하는 경우
Authentication에서는 메일/비밀번호, SMS라고 말한 자주 사용되는 것 같은 로그인 방법이나
Facebbook, Twitter 등의 소셜 로그인을 쉽게 구현할 수 있습니다.
그러나,
Instagram처럼 Authentication 로그인 방법에 준비되어 있지 않은 경우 어떻게해야합니까?
대답은
사용자 지정 인증을 사용하는 것입니다.
Instagram에서 Firebase 사용자 인증
거친 교환은 이런 느낌일까 ~라고 말한 상태의 그림입니다.
CustomToken을 만드는 방법
CustomToken은 서명이 있는 JWT(Json Web Token)입니다.
CustomToken 서명에 사용되는 개인 키는 GoogleServiceAccount에 속합니다.
Firebase Admin SDK가 CustomToken 서명에 사용하는 GoogleServiceAccount는 크게 세 가지 방법으로 지정할 수 있습니다.
ServiceAccountJSON 파일 사용
ServiceAccountJson 파일은 FirebaseConsole>Settings>일반에서 다운로드할 수 있습니다.
const serviceAccount = require('service-account.json')
admin.initializeApp({
credential: admin.credential.cert(serviceAccount)
})
장점
· 다운로드하고 읽을 수 있기 때문에 설정이 쉽습니다.
단점
· 관리는 확실히 (실수하면 서비스 계정과 관련된 정보를 볼 수 있습니다)
· Prod, Stg, Dev 등 여러 환경이 필요한 경우 읽을 Json 파일 지정이나 설정이 필요합니다.
서비스 계정 ID 사용
admin.initializeApp({
serviceAccountId: 'your_project_id'
})
장점
· ProjectId를 지정하기 때문에 설정이 쉽습니다.
단점
· Prod, Stg, Dev 등 여러 환경이 필요한 경우 읽을 Json 파일 지정이나 설정이 필요합니다.
Admin SDK가 서비스 계정 검색
Cloud Functions 등 Google이 관리하는 환경에 배포된 경우
Firebase Admin SDK가 로컬 메타데이터 서버에서 ServiceAccountId를 자동 감지하고 IAM 서비스와 함께 사용하여 원격으로 토큰에 서명할 수 있습니다.
admin.initializeApp()
장점
· Prod, Stg, Dev 등 여러 환경 대응이 편하다 (<- 환경이 늘어날 때마다 코드를 추가하는 수고로부터 탈각)
단점
· IAM 설정이나 오류로 처음 곤란하다 (<-이 기사를 보면 분명 해결 w)
Admin SDK가 서비스 계정을 찾는 동안 오류 응답
Error: Identity and Access Management (IAM) API has not been used in project {projectId} before or it is disabled...(생략)
Enable it by visiting {url}
IAM API를 사용하도록 설정해야 합니다.
오류 중에이 URL에 액세스하여 IAM API 설정을 확인하십시오. 문장이 포함되어 있기 때문에
IAM API 설정을 사용하도록 설정
Error: Permission iam.serviceAccounts.signBlob is required to perform this operation on service account projects/-/serviceAccounts/{project_name}@appspot.gserviceaccount.com
IAM API를 사용하도록 설정하면 아직 끝나지 않습니다.
{project_name}@appspot.gserviceaccount.com에 서비스 계정 토큰 작성자 역할을 부여해야 합니다.
여기 GCPConsole에서 역할을 부여하십시오.
Reference
이 문제에 관하여(CustomToken 인증을 할 때 IAM이 관련되는 케이스와 그 대응), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/giiiita/items/a1b0d793d47599dfa430
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Authentication에서는 메일/비밀번호, SMS라고 말한 자주 사용되는 것 같은 로그인 방법이나
Facebbook, Twitter 등의 소셜 로그인을 쉽게 구현할 수 있습니다.
그러나,
Instagram처럼 Authentication 로그인 방법에 준비되어 있지 않은 경우 어떻게해야합니까?
대답은
사용자 지정 인증을 사용하는 것입니다.
Instagram에서 Firebase 사용자 인증
거친 교환은 이런 느낌일까 ~라고 말한 상태의 그림입니다.
CustomToken을 만드는 방법
CustomToken은 서명이 있는 JWT(Json Web Token)입니다.
CustomToken 서명에 사용되는 개인 키는 GoogleServiceAccount에 속합니다.
Firebase Admin SDK가 CustomToken 서명에 사용하는 GoogleServiceAccount는 크게 세 가지 방법으로 지정할 수 있습니다.
ServiceAccountJSON 파일 사용
ServiceAccountJson 파일은 FirebaseConsole>Settings>일반에서 다운로드할 수 있습니다.
const serviceAccount = require('service-account.json')
admin.initializeApp({
credential: admin.credential.cert(serviceAccount)
})
장점
· 다운로드하고 읽을 수 있기 때문에 설정이 쉽습니다.
단점
· 관리는 확실히 (실수하면 서비스 계정과 관련된 정보를 볼 수 있습니다)
· Prod, Stg, Dev 등 여러 환경이 필요한 경우 읽을 Json 파일 지정이나 설정이 필요합니다.
서비스 계정 ID 사용
admin.initializeApp({
serviceAccountId: 'your_project_id'
})
장점
· ProjectId를 지정하기 때문에 설정이 쉽습니다.
단점
· Prod, Stg, Dev 등 여러 환경이 필요한 경우 읽을 Json 파일 지정이나 설정이 필요합니다.
Admin SDK가 서비스 계정 검색
Cloud Functions 등 Google이 관리하는 환경에 배포된 경우
Firebase Admin SDK가 로컬 메타데이터 서버에서 ServiceAccountId를 자동 감지하고 IAM 서비스와 함께 사용하여 원격으로 토큰에 서명할 수 있습니다.
admin.initializeApp()
장점
· Prod, Stg, Dev 등 여러 환경 대응이 편하다 (<- 환경이 늘어날 때마다 코드를 추가하는 수고로부터 탈각)
단점
· IAM 설정이나 오류로 처음 곤란하다 (<-이 기사를 보면 분명 해결 w)
Admin SDK가 서비스 계정을 찾는 동안 오류 응답
Error: Identity and Access Management (IAM) API has not been used in project {projectId} before or it is disabled...(생략)
Enable it by visiting {url}
IAM API를 사용하도록 설정해야 합니다.
오류 중에이 URL에 액세스하여 IAM API 설정을 확인하십시오. 문장이 포함되어 있기 때문에
IAM API 설정을 사용하도록 설정
Error: Permission iam.serviceAccounts.signBlob is required to perform this operation on service account projects/-/serviceAccounts/{project_name}@appspot.gserviceaccount.com
IAM API를 사용하도록 설정하면 아직 끝나지 않습니다.
{project_name}@appspot.gserviceaccount.com에 서비스 계정 토큰 작성자 역할을 부여해야 합니다.
여기 GCPConsole에서 역할을 부여하십시오.
Reference
이 문제에 관하여(CustomToken 인증을 할 때 IAM이 관련되는 케이스와 그 대응), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/giiiita/items/a1b0d793d47599dfa430
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
const serviceAccount = require('service-account.json')
admin.initializeApp({
credential: admin.credential.cert(serviceAccount)
})
admin.initializeApp({
serviceAccountId: 'your_project_id'
})
admin.initializeApp()
Error: Identity and Access Management (IAM) API has not been used in project {projectId} before or it is disabled...(생략)
Enable it by visiting {url}
IAM API를 사용하도록 설정해야 합니다.
오류 중에이 URL에 액세스하여 IAM API 설정을 확인하십시오. 문장이 포함되어 있기 때문에
IAM API 설정을 사용하도록 설정
Error: Permission iam.serviceAccounts.signBlob is required to perform this operation on service account projects/-/serviceAccounts/{project_name}@appspot.gserviceaccount.com
IAM API를 사용하도록 설정하면 아직 끝나지 않습니다.
{project_name}@appspot.gserviceaccount.com에 서비스 계정 토큰 작성자 역할을 부여해야 합니다.
여기 GCPConsole에서 역할을 부여하십시오.
Reference
이 문제에 관하여(CustomToken 인증을 할 때 IAM이 관련되는 케이스와 그 대응), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/giiiita/items/a1b0d793d47599dfa430텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)