ユーザーに対するカスタム クレームの構成
このドキュメントでは、Identity Platform を使用してユーザーにカスタム クレームを構成する方法について説明します。カスタム クレームは、認証中にユーザー トークンに挿入されます。アプリでこれらのクレームを使用して、ロールに基づいてリソースに対するユーザーのアクセスを制限するなど、複雑な認証シナリオに対応できます。
始める前に
カスタム クレームの使用
セキュリティを維持するには、サーバーで Admin SDK を使用してカスタム クレームを設定します。次の例は、Node.js でカスタム クレームを使用する方法を示しています。他の言語の例については、Admin SDK リファレンスをご覧ください。
使用するカスタム クレームを設定します。次の例では、管理者であることを説明するカスタム クレームがユーザーに設定されています。
// 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. });
次回にサーバーへ送信されるカスタム クレームを検証します。
// Verify the ID token first. admin.auth().verifyIdToken(idToken).then((claims) => { if (claims.admin === true) { // Allow access to requested admin resource. } });
ユーザーに対してどのようなカスタム クレームが存在するかを確認するには、次を実行します。
// 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)
を呼び出すことにより、トークンをサイレントに更新できます。 - 継続性とセキュリティを維持するために、安全なサーバー環境でのみカスタム クレームを設定してください。
次のステップ
- Admin SDK リファレンス ドキュメントで、Identity Platform のカスタム クレームの詳細を確認する。