ユーザーに対するカスタム クレームの構成

このドキュメントでは、Identity Platform を使用してユーザーにカスタム クレームを構成する方法について説明します。カスタム クレームは、認証中にユーザー トークンに挿入されます。アプリでこれらのクレームを使用して、ロールに基づいてリソースに対するユーザーのアクセスを制限するなど、複雑な認証シナリオに対応できます。

始める前に

カスタム クレームの使用

セキュリティを維持するには、サーバーで Admin SDK を使用してカスタム クレームを設定します。次の例は、Node.js でカスタム クレームを使用する方法を示しています。他の言語の例については、Admin SDK リファレンスをご覧ください。

  1. 使用するカスタム クレームを設定します。次の例では、管理者であることを説明するカスタム クレームがユーザーに設定されています。

    // Set admin privilege on the user corresponding to uid.
    admin.auth().setCustomUserClaims(uid, {admin: true}).then(() => {
      // The new custom claims will propagate to the user's ID token the
      // next time a new one is issued.
    });
    
  2. 次回にサーバーへ送信されるカスタム クレームを検証します。

    // Verify the ID token first.
    admin.auth().verifyIdToken(idToken).then((claims) => {
      if (claims.admin === true) {
        // Allow access to requested admin resource.
      }
    });
    
  3. ユーザーに対してどのようなカスタム クレームが存在するかを確認するには、次を実行します。

    // Lookup the user associated with the specified uid.
    admin.auth().getUser(uid).then((userRecord) => {
      // The claims can be accessed on the user record.
      console.log(userRecord.customClaims.admin);
    });
    

カスタム クレームは非常に強力ですが、次の点に注意してください。

  • カスタム クレームのサイズは 1000 バイト以下でなければなりません。1,000 バイトを超えるクレームを渡そうとすると、エラーが発生します。
  • カスタム クレームは、トークンが発行されたときにユーザー JWT に挿入されます。トークンが更新されるまで、新しいクレームは使用できません。user.getIdToken(true) を呼び出すことにより、トークンをサイレントに更新できます。
  • 継続性とセキュリティを維持するために、安全なサーバー環境でのみカスタム クレームを設定してください。

次のステップ