JWT の生成
IBM® API Connect の 「JWT の生成」 セキュリティー・ポリシーを使用して、JSON Web Token (JWT) を生成します。
ゲートウェイのサポート
| ゲートウェイ | ポリシーのバージョン |
|---|---|
| DataPower® Gateway (v5 compatible) | 1.0.0 |
| DataPower API Gateway | 2.1.0 |
このトピックでは、アセンブリー・ユーザー・インターフェースでのポリシーの構成方法について説明します。 OpenAPI ソースでのポリシーの構成方法について詳しくは、 jwt-generateを参照してください。
製品情報
JSON Web トークン (JWT) は、2 つのパーティー間で転送されるクレームを表すための、コンパクトで、URL セーフな手段です。 「JWT の生成」 ポリシーを使用すると、クレームを生成し、それらを JSON Web 署名 (JWS) 構造のペイロードとして使用するか、JSON Web 暗号化 (JWE) 構造のプレーン・テキストとして使用するかを構成することができます。 JWS と JWE の両方の暗号素材を指定することで、ネストされた JWT が生成されます。この JWT は、デジタル署名され、暗号化もされています。 その後、JWT は、ベアラー・トークン (デフォルト・オプション) として許可ヘッダーに割り当てられるか、 JSON Web Token (JWT) プロパティー内のランタイム変数 (指定されている場合) に割り当てられます。
- アルゴリズム・タイプが HS256、HS384、および HS512 の場合、参照される暗号オブジェクトは共有秘密鍵でなければなりません。
- アルゴリズム・タイプが RS256、RS384、RS512、ES256、ES384、ES512、PS256、PS384、PS512 の場合、参照される暗号オブジェクトは暗号鍵 (秘密鍵) でなければなりません。
- 暗号資料は、JSON Web Key (JWK) を介して提供できます。
- 暗号オブジェクトと JWK の両方を指定した場合、暗号オブジェクトが JWT に署名するために使用されます。
前提条件
- 1つ以上の暗号化オブジェクト(cryptoオブジェクト)を使用している場合は、それらをアプライアンス上の API Connect ドメインに配置する必要があります。 DataPower アプライアンス上に 暗号オブジェクトは、JWT コンテンツの暗号化および署名に必要な共有秘密鍵または証明書を参照する必要があります。
- JSON Web Key (JWK) が使用されている場合、JWK はランタイム変数によって参照される必要があります。
プロパティ-
以下の表に、このポリシーのプロパティーをリストします。表には、プロパティーが必須かどうか、入力用の有効な値とデフォルト値、および値のデータ型が示されています。
| プロパティー・ラベル | 必須 | 説明 | データ・タイプ |
|---|---|---|---|
| タイトル | いいえ | ポリシーのタイトル。 デフォルト値は |
ストリング |
| 説明 | いいえ | ポリシーの説明。 | ストリング |
| JSON Web トークン (JWT) | いいえ | 生成された JWT を格納するためのランタイム変数。 デフォルト値は、 |
ストリング |
| JWT ID クレーム | いいえ | JWT ID (jti) クレームを JWT に追加するかどうかを指定します。 選択した場合、プロパティーが |
ブール値 |
| Issuer クレーム | はい | Issuer (iss) クレーム・ストリングの取得元となるランタイム変数。 このクレームは、JWT を発行したプリンシパルを表しています。 デフォルト値は、 |
ストリング |
| Subject クレーム | いいえ | Subject (sub) クレーム・ストリングの取得元となるランタイム変数。 | ストリング |
| Audience クレーム | いいえ | Audience (aud) クレーム・ストリングの取得元となるランタイム変数。 複数の変数を設定する場合は、コンマ区切りのストリングを使用します。 | ストリング |
| 有効期間 | はい | JWT が有効とみなされる期間として、現在の日時に追加される時間の長さ (秒)。 デフォルト値は |
整数 |
| プライベート・クレーム | いいえ | 一連の有効な JSON クレームの取得元となるランタイム変数。 これらのクレームは、前に指定した任意の一連のクレームに追加されます。 | ストリング |
| 署名用 JWK 変数名 | いいえ | JWT に署名するために使用される JWK を格納するランタイム変数。1 | ストリング |
| 暗号アルゴリズム | いいえ | 使用する暗号アルゴリズム。 有効値は、以下のとおりです。
|
ストリング |
| 署名用暗号オブジェクト | いいえ | JWT に署名するために使用する暗号オブジェクト。1 | ストリング |
| 記号 KID 値 | いいえ | JWT 署名用にカスタマイズされた kid 値。 |
ストリング |
| 暗号化アルゴリズム | いいえ | 使用する暗号化アルゴリズム。 有効値は、以下のとおりです。
|
ストリング |
| 暗号化用 JWK 変数名 | いいえ | JWT を暗号化するために使用する JWK を格納するランタイム変数。 | ストリング |
| 鍵暗号化アルゴリズム | いいえ | 使用する鍵暗号化アルゴリズム。 有効値は、以下のとおりです。
|
ストリング |
| 暗号化用暗号オブジェクト | いいえ | クレームを暗号化するために使用する暗号オブジェクト。 | ストリング |
| KID 値の暗号化 | いいえ | JWT 暗号化用にカスタマイズされた kid 値。 |
ストリング |
例
- jwt-generate:
version: 2.1.0
title: jwt-generate
description: New jwt-generate v2.1.0 policy.
jwt: generated.jwt
jti-claim: true
iss-claim: iss.claim
sub-claim: sub.claim
aud-claim: aud.claim
exp-claim: 3600
private-claims: private.claims
jws-jwk: jws.jwk
jws-alg: HS256
jws-crypto: jwsCryptoObjectName
custom-kid-value-jws: jws.kid
jwe-enc: A128CBC-HS256
jwe-jwk: jwe.jwk
jwe-alg: RSA1_5
jwe-crypto: jweCryptoObjectName
custom-kid-value-jwe: jwe.kid
エラー
RuntimeError- ポリシーの実行中に発生するすべてのエラーをキャプチャーする一般的なエラー。 失敗した時、基礎となる JOSE モジュールから受け取った詳細なエラー・メッセージがデフォルトのシステム・ログにエラー・メッセージとして書き込まれます。 この詳細なエラー・メッセージは、ランタイム変数 jwt-generate.error-message にも割り当てられるため、catch 経由で取得できます。
Invalid-JWT-Generate のエラーを返します。 基礎となる JOSE モジュールからの詳細なエラー・メッセージは、システム・ログで見つけることができます。