ローカル環境でFirebase Authのカスタムクレーム(Custom Claim)を設定する

image

Firebase Authのカスタムクレーム(Custom Claim)をローカルで設定するテンプレートを作成しました。
こちらからダウンロードして利用してください。

利用方法

READMEにも記載がありますが、テンプレートの利用方法はこちらです。

  1. Firebaseの管理画面からAdmin SDKの秘密鍵をダウンロードし、プロジェクト直下にservice-account.jsonとうい名前で配置
  2. yarn install
  3. Firebase Authで対象のユーザーのUIDを取得してnode claims.js {uid}コマンドを実行

結果

admin: trueのカスタムクレームが付与されます。
別のカスタムクレームを付与したい場合はclaims.jsのファイルを修正してください。

カスタムクレームとは?

Firebase AuthのUserに属性を定義する事ができます。
これはFirebase Admin SDKでしか設定ができないので、上記のようにAdmin SDKの秘密鍵が必要になります。

できるようになる事

配布しているテンプレートでは、admin: trueのカスタムクレームが付与されます。
そうすると、Cloud Firestoreのデータベースセキュリティルールで、以下のようにadmin: trueのユーザーだけが操作できるコンテンツとしてデータを保護する事ができます。

{
  "rules": {
    "adminContent": {
      ".read": "auth.token.admin === true",
      ".write": "auth.token.admin === true",
    }
  }
}

また、スマートフォンアプリやWebアプリからもカスタムクレームは取得できるので、ユーザーの役割に応じたコンテンツの制限を行う場合は利用するべき機能です。

さいごに

管理者権限等、特定のユーザーのみにAdmin権限を渡したい場合は、今回の方法で十分かと思います。
もし、課金をトリガーとしてカスタムクレームでプレミアム会員の判断したい場合などでは、Cloud Functionsと組み合わせてカスタムクレームを付与すると良いでしょう。

以上、Firebase Authのカスタムクレーム(Custom Claim)をローカルで設定する方法の解説でした。