claims (クレーム)とは?
認証の話題で出てくるクレームとは?
認証におけるクレームとは、認証に必要な個人情報のことです。部署や名前などが該当します。
認証側は、クレーム情報をまとめてデジタル署名を行い、認証トークンを発行します。許可側は、もらった認証トークンをベースに、許可の有無を判定します。そしてOKがでると、認可トークンを発行します。
クレームには、スコープ(scope)に含まれるものと、claims パラメーターを用いて個別に指定されるものがあります。
また、Firebase Authentication の Custom Claims とは、ユーザーの ID トークンに追加できるカスタム属性のことを指します。これにより、ユーザーに特定の役割や権限を付与することができます。
JWTの場合だと?
公式を翻訳して解説していきます。
JSON Web トークンの要求
JSON Web トークン (JWT)
クレームは、主題について主張される情報の一部です。たとえば、
IDトークン
(常にJWTname ) には、認証するユーザーの名前が「John Doe」であることを主張する というクレームを含めることができます。JWT では、クレームは名前と値のペアとして表示されます。名前は常に文字列であり、値は任意の JSON 値にすることができます。一般に、JWT のコンテキストでクレームについて話すときは、名前 (またはキー) を指します。たとえば、次の JSON オブジェクトには 3 つのクレーム ( sub、name、admin) が含まれています。
{
"sub": "1234567890",
"name": "John Doe",
"admin": true
}
JWT クレームには 2 つのタイプがあります。
- Registered : に登録された標準クレーム
インターネット割り当て番号局 (IANA)
そして、によって定義されます - JWT仕様
サードパーティまたは外部のアプリケーションとの相互運用性を確保します。OIDC 標準クレームは予約済みクレームです。
カスタム: 未登録のパブリック クレームまたはプライベート クレームで構成されます。パブリック クレームは衝突耐性がありますが、プライベート クレームは衝突の可能性があります。
登録済みクレーム
JWT 仕様では、必須ではありませんが、相互運用性を可能にするために推奨される 7 つの予約済みクレームが定義されています。
サードパーティのアプリケーション
これらは:
iss(発行者): JWTの発行者
sub(件名): JWT の件名 (ユーザー)
aud( audience ): JWT の対象となる受信者
exp(有効期限): JWT の有効期限が切れるまでの時間
nbf(not before time): この時間より前に JWT の処理を受け入れてはなりません
iat(発行時刻): JWT が発行された時刻。JWT の古さを判断するために使用できます。
jti(JWT ID): 一意の識別子。JWT の再生を防ぐために使用できます (トークンの使用を 1 回だけ許可します)。
登録済みクレームの完全なリストは、次の場所で確認できます。
カスタムクレーム
制御する独自のカスタム クレームを定義でき、アクションを使用してそれらをトークンに追加できます。ここではいくつかの例を示します。
-
ユーザーの電子メール アドレスをアクセス トークンに追加し、それを使用してユーザーを一意に識別します。
-
Auth0 ユーザー プロファイルに保存されているカスタム情報をID トークンに追加します。
アクションが存在する限り、追加されたカスタム クレームは、
リフレッシュトークン
公的主張
一般向けにカスタム クレームを作成できます。これには、名前や電子メールなどの一般的な情報が含まれる場合があります。パブリック クレームを作成する場合は、パブリック クレームを登録するか、名前空間を通じて衝突耐性のある名前を使用し、使用する名前空間を確実に制御できるように合理的な予防措置を講じる必要があります。
の中に
IANA JSON Web トークン クレーム レジストリ
では、 OpenID Connect (OIDC)によって登録されたパブリック クレームの例をいくつか確認できます。
-
auth_time
-
acr
-
nonce
私的請求
プライベート カスタム クレームを作成して、アプリケーション固有の情報を共有できます。たとえば、パブリック クレームには名前や電子メールなどの一般的な情報が含まれる場合がありますが、プライベート クレームには従業員 ID や部門名などのより具体的な情報が含まれます。
Auth0 の制限事項
Auth0 は、カスタム クレームに対して一般的な制限を適用します。
カスタム クレーム ペイロードは最大 100KB に設定されています
OIDC およびその他の登録された標準クレームのサブセット、または Auth0 によって内部的に使用されるクレームはカスタマイズまたは変更できません
Auth0 API オーディエンスを持つアクセス トークン (/userinfoエンドポイントを除く) は、プライベートな名前空間のないカスタム クレームを持つことができません
指定された OIDC ユーザー プロファイル クレームのみをアクセス トークンに追加できます
カスタム クレームの詳細については、をお読みください。
カスタムクレームの作成
まとめ
以前からわからなかったクレームというのは、認証に必要な個人情報のことで、部署や名前などが該当します。
参考になったサイト
Discussion