CustomToken 인증을 할 때 IAM이 관련되는 케이스와 그 대응

이 기사에 대하여



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에서 역할을 부여하십시오.

좋은 웹페이지 즐겨찾기