JWTベアラー・トークンを作成する

このトピックの情報を使用して、JWT ベアラー・フローで使用される JWT ベアラー・トークンを作成します。

JWT ベアラー・ペイロードのクレーム

JWT ベアラー・ペイロードには、以下のクレームを含める必要があります。
表 1. MUSTの主張
クレーム名 説明 有効値
iss JWT を発行したエンティティーの固有 ID JWT 発行者の有効な URI。
sub 主要なサブジェクト ID ユーザーの固有 ID。
aud 呼び出される OIDC エンドポイント https://<tenantId>/oidc/endpoint/default/token
exp JWT の有効期限 UTC で計測される 1970-01-01T0:0:0Z からの秒数。
注: JWTの有効期限は、86400秒を超えて設定することはできません。
jti JWT の ID ランダムに生成される不透明ストリング。
JWT ベアラー・ペイロードには、以下のクレームを含めることができます。
表 2. MAYの主張
クレーム名 説明 有効値
nbf JWT の not before 時刻 UTC で計測される 1970-01-01T0:0:0Z からの秒数。
iat JWT の作成時間 UTC で計測される 1970-01-01T0:0:0Z からの秒数。
注: JWTの有効期限は、過去から86400秒を超えてはなりません。
realm 主要なサブジェクト・レルム 「sub」が属している ID ソースのレルム。

JWT ベアラー・ペイロードの例

```
{
  "iss": "https://www.relyingparty.com",
  "sub": "user@idsource.com",
  "aud": "https://sometenant.ice.com/oidc/endpoint/default/token",
  "exp": 1324298520,
  "jti": "araiov8werli2awerlj"
}
```

サポート対象アルゴリズム

表 3. 対応アルゴリズム
目的 サポート対象アルゴリズム
署名のための JWS の「alg」 'RS256', 'RS384', 'RS512', 'HS256', 'HS384', 'HS512', 'PS256', 'PS384', 'PS512'
キー管理のための JWE の「alg」 「RSA1_5」、「RSA-OAEP」、「RSA-OAEP-256」、「A128KW」、「A192KW」、「A256KW」、「A128GCMKW」、「A192GCMKW」、「A256GCMKW」
コンテンツ暗号化のための JWE の「enc」 'A128GCM', 'A192GCM', 'A256GCM'
注: JWTベアラーが署名済みかつ暗号化されている場合、外側のJWTであるJWEヘッダーは、コンテンツタイプヘッダーを「JWT」に設定することで、それがネストされたJWTであることを示す必要があります。 例えば、 'cty':'JWT'などです。
JWT ベアラーは、署名、暗号化、またはその両方が行われている必要があります。 JWT への署名に使用されるキーが、jwks_uri で公開されていることを確認してください。 jwks_uri を使用できない場合は、パブリック証明書をシステムに追加します。 「証明書の管理」 を参照してください。

JWTベアラーが暗号化されており、非対称アルゴリズムが使用されている場合、 OpenID のConnect Providerのjwksエンド https://<tenantId>/v1.0/endpoint/default/jwks ポイントで公開されている公開鍵を使用できます。 署名または暗号化された JWT に、使用される鍵を一意的に識別するための「kid」ヘッダーが含まれていることを確認してください。

要求の例

JWT ベアラー・トークンが作成された後に、トークン・エンドポイントに要求を送信して JWT ベアラー・トークンをアクセス・トークンと交換することができます。
```
curl -ki https://<tenantId>/v1.0/endpoint/default/token
 -d "grant_type=urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Ajwt
-bearer&client_secret=<secret>&client_id=<clientId>
&scope=openid+email&assertion=eyJhbGciOiJFUzI1NiIsImtpZCI6IjE2In0.eyJpc3Mi..."
```