2.10.2. JSON Web Token (JWT) 認証の構成
elytron サブシステムで token-realm を指定することで、JWT のサポートを有効にできます。
token-realm 内で、属性と jwt トークンバリデーターを指定できます。Elytron は次のチェックを完了します。
-
expクレームおよびnbfクレームで指定された値の自動有効期限チェック。 オプション: 次のいずれかの方法で提供される公開鍵に基づく署名チェック:
-
public-keyまたはcertificate属性を使用 - 名前付き公開鍵での鍵マップの使用
-
client-ssl-context属性を使用して、jkuクレームで指定された URL からリモート JSON Web キー (JWK) セットを取得します。
-
-
オプション: JWT をチェックして、
issおよびaudクレームでサポートされている値のみが含まれていることを確認します。issuer属性とaudience属性を使用して、これらのチェックを実行できます。
次の例は、セキュリティーレルムとして token-realm を示し、属性として principal-claim を示しています。principal-claim 属性は、elytron がプリンシパルの名前を取得するために使用するクレームの名前を定義します。jwt 要素は、トークンを JWT として検証する必要があることを指定します。
構成された token-realm の例
<token-realm name="${token_realm_name}" principal-claim="${principal_claim_key}">
<jwt issuer="${issuer_name}"
audience="${audience_name}"
<public-key="${public_key_in_PEM_format}"/>
</token-realm>
token-realm のキーマップを定義できます。次に、署名の検証にさまざまなキーペアを使用して、これらのキーペアを簡単にローテーションできます。Elytron はトークンから kid の主張を取得し、検証に対応する公開鍵を使用します。
-
kidクレームが JWT に存在しない場合、token-realmはjwtのpublic-key属性で指定された値を使用して署名を検証します。 -
kidクレームが JWT に存在せず、public-keyを構成していない場合、token-realmはトークンを無効にします。
token-realm 用に設定されたキーマップの例。
<token-realm name="${token_realm_name}" principal-claim="${principal_claim_key}">
<jwt issuer="${issuer_name}" audience="${audience_name}">
<key kid="${key_ID_from_kid_claim}" public-key="${public_key_in_PEM_format}"/>
<key kid="${another_key_ID_from_kid_claim}" public-key="${public_key_in_PEM_format}"/>
</jwt>
</token-realm>
手順
keytoolを使用してkey-storeを作成します。keytoolを使用してkey-storeを作成する例。keytool -genkeypair -alias <alias_name> -keyalg <key_algorithm> -keysize <key_size> -validity <key_validity_in_days> -keystore <key_store_path> -dname <distinguished_name> -keypass <key_password> -storepass <key_store_password>次に、
elytronサブシステムにkey-store定義を追加します。elytronサブシステムにkey-store定義を追加する例。/subsystem=elytron/key-store=<key_store_name>:add(path=<key_store_path> , credential-reference={clear-text=<key_store_password>}, type=<keystore_type>)elytronサブシステムでtoken-realmを作成し、token-realmの属性とjwtトークンバリデーターを指定します。elytronサブシステムでtoken-realmを作成する例。/subsystem=elytron/token-realm=<token_realm_name>:add(jwt={issuer=[<issuer_name>],audience=[<audience_name>],key-store=<key_store_name>,certificate=<alias_name>},principal-claim=<principal_claim_key>)
次のステップ
- アプリケーションの認証を設定するには、「アプリケーション の認証の設定」を参照 してください。
関連情報
-
token-realmjwt属性の詳細については、How to Configure Server Security ガイドの Table A.94. token-realm jwt Attributes を参照してください。