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-realm
jwt
属性の詳細については、How to Configure Server Security ガイドの Table A.94. token-realm jwt Attributes を参照してください。