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は大きく3つの方法で指定することができます。
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}
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を有効にする必要があります。
Errorの中にこの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にサービス アカウント トークン作成者の役割を付与する必要があります。
Author And Source
この問題について(CustomToken認証を行う際IAMが絡んでくるケースとその対応), 我々は、より多くの情報をここで見つけました https://qiita.com/giiiita/items/a1b0d793d47599dfa430著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .