JSON Web Tokenクレーム
JSON Web Token(JWT)クレームは対象について主張された情報です。たとえば、IDトークン(必ずJWT)には、認証しようとしているユーザーの名前が「John Doe」であると主張するname
クレームが含まれています。JWTでは、クレームは名前と値のペアで表記され、名前は常に文字列で、値は任意のJSON値になります。一般的に、JWTに関してクレームと言えば、名前(または鍵)のことを指します。たとえば、以下のJSONオブジェクトには3つのクレーム(sub
、name
、admin
)が含まれています。
{
"sub": "1234567890",
"name": "John Doe",
"admin": true
}
Was this helpful?
JWTクレームには以下の2種類があります。
登録済み:インターネット番号割当機関(IANA:Internet Assigned Numbers Authority)に登録された標準クレームで、サードパーティーや外部アプリケーションとの相互運用性を確保するためにJWT仕様により定義されています。OIDCの標準クレームは予約済みのクレームです。
カスタム:未登録のパブリッククレームと未登録のプライベートクレームがあります。パブリッククレームには衝突耐性がありますが、プライベートクレームは衝突する可能性があります。
登録クレーム
JTW仕様は、予約済みのクレームを7つ定義しています。これらは必須ではありませんが、サードパーティーアプリケーションとの相互運用性を確保するために推奨されています。これには、以下が含まれます。
iss
(発行者):JWTの発行者sub
(件名):JWT(ユーザー)の件名aud
(オーディエンス):JWTの意図された受信者exp
(有効期限):JWTの有効期限nbf
(有効期限の開始日時):この日時より前にJWTの処理を受け付けてはいけないiat
(発行日時):JWTが発行された日時。JWTの経過時間を決定するのに使用可能jti
(JWT ID):一意の識別子。JWTがリプレイされるのを防ぐために使用可能(トークンの使用を一度に限定)
登録クレームの全リストについては、IANA JSON Web Token Claims Registryを参照してください。
カスタムクレーム
独自のカスタムクレームを定義することができます。独自に制御し、アクションを使ってトークンに追加することができます。例としては以下が挙げられます。
ユーザーのメールアドレスをアクセストークンに追加して、ユーザーを一意に識別するために使用する
Auth0のユーザープロファイルに保管されているカスタム情報をIDトークンに追加する
アクションが実行されている限り、アクションによって追加されるカスタムクレームは、リフレッシュトークンを使って発行される新しいトークンに含まれます。
カスタムクレームをトークンに追加する方法を示す例については、「ユースケースの例:スコープとクレーム」を参照してください。
パブリッククレーム
名前やメールなど、一般的な情報を含んだカスタムクレームを公開して使用するために作成することができます。パブリッククレームを作成する場合には、登録するか、名前空間を使って衝突耐性のあるものにして、使用する名前空間を必ず制御できるように合理的な予防策をとってください。
IANA JSON Web Token Claims Registryには、以下のように、OpenID Connect(OIDC)によって登録されたパブリッククレームがいくつかあります。
auth_time
acr
nonce
プライベートクレーム
プライベートのカスタムクレームを作成して、アプリケーションに特有の情報を共有することができます。たとえば、パブリッククレームには、名前やメールなど、一般的な情報を含めることができますが、プライベートクレームにはより特定的な、従業員IDや部署などの情報を含めます。
Auth0の制約
Auth0はカスタムクレームに以下の一般的制約を適用します。
カスタムクレームのペイロードは最大100 KBに設定される
OIDCのサブセットや他の標準の登録クレーム、またはAuth0によって内部的に使用されるクレームはカスタマイズや変更できない
/userinfo
エンドポイントを除いて、Auth0 APIオーディエンスのアクセストークンには、名前空間のない、プライベートなカスタムクレームが含まれてはいけない指定されたOIDCユーザープロファイルクレームしかアクセストークンに追加できない
カスタムクレームの詳細については、「カスタムクレームを作成する」をお読みください。