2.10. ベアラートークンを使用して認証と承認の設定
2.10.1. ベアラートークン認証
BEARER_TOKEN
認証メカニズムを使用して、アプリケーションに送信される HTTP リクエストを承認できます。Web ブラウザーなどのクライアントが HTTP 要求をアプリケーションに送信した後、BEARER_TOKEN
メカニズムは、要求の Authorization
HTTP ヘッダーにベアラートークンが存在することを確認します。
Elytron は、OpenID Connect ID トークンなどの JWT 形式のベアラートークンを使用するか、OAuth2 準拠の承認サーバーによって発行された不透明なトークンを使用することで認証をサポートします。関連情報のセクションを参照してください。
次の例は、Authorization
HTTP ヘッダーに mF_9.B5f-4.1JqM
ベアラートークンが含まれていることを示しています。
GET /resource HTTP/1.1 Host: server.example.com Authorization: Bearer mF_9.B5f-4.1JqM
BEARER_TOKEN
メカニズムは、ベアラトークン文字列を抽出し、検証のために token-realm
実装に渡すことができるようになりました。実装がベアラートークンの検証に成功すると、Elytron はトークンによって表される情報に基づいてセキュリティーコンテキストを作成します。アプリケーションは、このセキュリティーコンテキストを使用して、リクエスターに関する情報を取得できます。次に、リクエスターに HTTP リソースへのアクセスを提供することにより、リクエストを実行するかどうかを決定できます。
リクエスターがベアラートークンを提供しない場合、BEARER_TOKEN
メカニズムは 401 HTTP
ステータスコードを返します。以下に例を示します。
HTTP/1.1 401 Unauthorized WWW-Authenticate: Bearer realm="example"
リクエスターがリソースへのアクセスを許可されていない場合、BEARER_TOKEN
メカニズムは 403 HTTP
ステータスコードを返します。
HTTP/1.1 403 Forbidden
関連情報
- JWT 検証の詳細は、JSON Web Tokens (JWT)認証の設定 を参照してください。
- OAuth2 検証の詳細は、OAuth2 準拠の承認サーバーによって発行されたトークンを使用した認証の設定 を参照してください。
-
token-realm
で使用できる属性の詳細は、サーバーのセキュリティーの設定方法 ガイドの 表 A.93.token-realm
属性 を参照してください。
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
属性の詳細は、サーバーのセキュリティーの設定方法 の 表 A.94. token-realm jwt 属性 を参照してください。
2.10.3. OAuth2 準拠の承認サーバーによって発行されたトークンを使用した認証の設定
Elytron は、OAuth2 準拠の認証サーバーによって発行されたベアラートークンをサポートします。事前定義された oauth2-introspection
エンドポイントに対してトークンを検証するようにトークンレルムを設定できます。
手順
トークンレルムを作成します。
elytron
サブシステムを使用してトークンレルムを作成する例:/subsystem=elytron/token-realm=<token_realm_name>:add(principal-claim=<principal_claim_key>, oauth2-introspection={client-id=<client_id>, client-secret=<client_secret>, introspection-url=<introspection_URL>})
次の例は、
token-realm
要素で指定されたoauth2-introspection
要素を示しています。このトークンレルムは、事前定義されたoauth2-introspection
エンドポイントに対してトークンを検証するように設定されています。oauth2-introspection
エンドポイントは、client-id
属性とclient-secret
属性で指定された値を使用して、クライアントを識別します。token-realm
要素内のoauth2-introspection
要素の例:<token-realm name="${token_realm_name}" principal-claim="${principal_claim_key}"> <oauth2-introspection client-id="${client_id}" client-secret="${client_secret}" introspection-url="${introspection_URL}" host-name-verification-policy="${hostname_verification_policy_value}"/> </token-realm>
次のステップ
- アプリケーションの認証を設定するには、アプリケーションの認証の設定 を参照してください。
関連情報
-
トークンイントロスペクションエンドポイントの詳細は、表 A.95
token-realm
oauth2-introspection
Attributes を参照してください。
2.10.4. アプリケーションのベアラートークン認証の設定
Open ID Connect ID トークンなどの JWT 形式のベアラートークンを使用するか、OAuth2 準拠の承認サーバーによって発行された不透明なトークンを使用して、アプリケーションの認証を設定できます。
前提条件
必要な認証方法に応じて、次のいずれかの手順を実行して
token-realm
を作成します。
手順
elytron
サブシステムにセキュリティードメインを作成します。セキュリティードメインでトークンセキュリティーレルムを指定していることを確認してください。elytron
サブシステムにセキュリティードメインを作成する例。/subsystem=elytron/security-domain=<security_domain_name>:add(realms=[{realm=<token_realm_name>,role-decoder=<role_decoder_name>}],permission-mapper=<permission_mapper_name>,default-realm=<token_realm_name>)
BEARER_TOKEN
メカニズムを使用するhttp-authentication-factory
を作成します。http-authentication-factory
の作成例。/subsystem=elytron/http-authentication-factory=<authentication_factory_name>:add(security-domain=<security_domain_name>,http-server-mechanism-factory=global,mechanism-configurations=[{mechanism-name=BEARER_TOKEN,mechanism-realm-configurations=[{realm-name=<token_realm_name>}]}])
undertow
サブシステムでapplication-security-domain
を設定します。undertow
サブシステムでapplication-security-domain
を設定する例。/subsystem=undertow/application-security-domain=<application_security_domain_name>:add(http-authentication-factory=<authentication_factory_name>)
-
アプリケーションの
web.xml
およびjboss-web.xml
ファイルを設定します。アプリケーションのweb.xml
でBEARER_TOKEN
認証方式が指定されていることを確認する必要があります。さらに、jboss-web.xml
が JBoss EAP で設定したapplication-security-domain
を使用していることを確認します。
関連情報
-
BEARER_TOKEN
認証メカニズムの詳細については、ベアラートークン認証 を参照してください。 -
token-realm
jwt
属性の詳細は、サーバーのセキュリティーの設定方法 の 表 A.94. token-realm jwt 属性 を参照してください。 -
OAuth2 トークンエンドポイントで使用できる属性の詳細は、表 A.95
token-realm
oauth2-introspection
Attributes を参照してください。 -
アプリケーションの
web.xml
およびjboss-web.xml
設定の詳細については、アイデンティティー管理の設定方法 ガイドの 認証に Elytron またはレガシーセキュリティーを使用するよう Web アプリケーションを設定する手順 を参照してください。