第9章 JBoss EAP での OpenID Connect
JBoss EAP ネイティブ OpenID Connect (OIDC) クライアントを使用して、外部 OpenID プロバイダーを介してアプリケーションをセキュリティー保護します。OIDC は、JBoss EAP などのクライアントが OpenID プロバイダー認証に基づいてユーザーの ID を検証できるようにする ID レイヤーです。たとえば、OpenID プロバイダーとして Red Hat Single Sign-On を使用して、JBoss EAP アプリケーションをセキュリティー保護できます。
9.1. JBoss EAP での OpenID Connect 設定 リンクのコピーリンクがクリップボードにコピーされました!
OpenID プロバイダーを使用してアプリケーションを保護する場合、セキュリティードメインリソースをローカルで設定する必要はありません。elytron-oidc-client サブシステムは、OpenID プロバイダーと接続するための JBoss EAP のネイティブ OpenID Connect (OIDC) クライアントを提供します。JBoss EAP は、OpenID プロバイダーの設定に基づいて、アプリケーションの仮想セキュリティードメインを自動的に作成します。
Red Hat Single Sign-On で OIDC クライアントを使用することを推奨します。JSON Web トークン (JWT) であるアクセストークンを使用するように設定でき、RS256、RS384、RS512、ES256、ES384、または ES512 署名アルゴリズムを使用するように設定できる場合は、他の OpenID プロバイダーを使用できます。
OIDC の使用を有効にするには、elytron-oidc-client サブシステムまたはアプリケーション自体を設定できます。JBoss EAP は、次のように OIDC 認証をアクティブにします。
-
アプリケーションを JBoss EAP にデプロイすると、
elytron-oidc-clientサブシステムがデプロイメントをスキャンして、OIDC 認証メカニズムが必要かどうかを検出します。 -
サブシステムが
elytron-oidc-clientサブシステムまたはアプリケーションデプロイメント記述子のいずれかでデプロイメントの OIDC 設定を検出した場合、JBoss EAP はアプリケーションの OIDC 認証メカニズムを有効にします。 -
サブシステムが両方の場所で OIDC 設定を検出した場合、
elytron-oidc-clientサブシステムsecure-deployment属性の設定が、アプリケーションデプロイメント記述子の設定よりも優先されます。
Red Hat Single Sign-On でアプリケーションをセキュリティー保護するための keycloak-client-oidc レイヤーは、JBoss EAPXP4.0.0 では非推奨になっています。代わりに、elytron-oidc-client サブシステムによって提供されるネイティブ OIDC クライアントを使用してください。
デプロイメント設定
デプロイメント記述子を使用して OIDC でアプリケーションを保護するには、アプリケーションのデプロイメント設定を次のように更新します。
OIDC 設定情報を含む
oidc.jsonというファイルをWEB-INFディレクトリーに作成します。oidc.jsonコンテンツの例{ "client-id" : "customer-portal",1 "provider-url" : "http://localhost:8180/auth/realms/demo",2 "ssl-required" : "external",3 "credentials" : { "secret" : "234234-234234-234234"4 } }-
アプリケーションデプロイメント記述子
web.xmlファイルでauth-methodプロパティーをOIDCに設定します。
デプロイメント記述子の更新例
<login-config>
<auth-method>OIDC</auth-method>
</login-config>
サブシステムの設定
次の方法で elytron-oidc-client サブシステムを設定することで、OIDC を使用してアプリケーションを保護できます。
- アプリケーションごとに同じ OpenID プロバイダーを使用する場合は、複数のデプロイメントに対して単一の設定を作成します。
- アプリケーションごとに異なる OpenID プロバイダーを使用する場合は、デプロイメントごとに異なる設定を作成します。
単一デプロイメントの XML 設定の例:
<subsystem xmlns="urn:wildfly:elytron-oidc-client:1.0">
<secure-deployment name="DEPLOYMENT_RUNTIME_NAME.war">
<client-id>customer-portal</client-id>
<provider-url>http://localhost:8180/auth/realms/demo</provider-url>
<ssl-required>external</ssl-required>
<credential name="secret" secret="0aa31d98-e0aa-404c-b6e0-e771dba1e798" />
</secure-deployment
</subsystem>
同じ OpenID プロバイダーを使用して複数のアプリケーションを保護するには、次の例に示すように、provider を個別に設定します。
<subsystem xmlns="urn:wildfly:elytron-oidc-client:1.0">
<provider name="${OpenID_provider_name}">
<provider-url>http://localhost:8080/auth/realms/demo</provider-url>
<ssl-required>external</ssl-required>
</provider>
<secure-deployment name="customer-portal.war">
<provider>${OpenID_provider_name}</provider>
<client-id>customer-portal</client-id>
<credential name="secret" secret="0aa31d98-e0aa-404c-b6e0-e771dba1e798" />
</secure-deployment>
<secure-deployment name="product-portal.war">
<provider>${OpenID_provider_name}</provider>
<client-id>product-portal</client-id>
<credential name="secret" secret="0aa31d98-e0aa-404c-b6e0-e771dba1e798" />
</secure-deployment>
</subsystem>