2.5. 証明書による認証設定
証明書ベースの認証を設定する前に、双方向 SSL を設定する必要があります。双方向 SSL の設定に関する詳細は、サーバーセキュリティーの設定方法の Elytron サブシステムを使用してアプリケーションに対して双方向 SSL/TLS を有効化する を参照してください。
key-store-realmを設定します。/subsystem=elytron/key-store-realm=ksRealm:add(key-store=twoWayTS)
このレルムは、クライアントの証明書が含まれるトラストストアで設定する必要があります。認証プロセスでは、双方向 SSL のハンドシェイク時にクライアントが提示するものと同じ証明書を使用します。
デコーダーを作成します。
証明書からプリンシパルをデコードするには、
x500-attribute-principal-decoderを作成する必要があります。以下の例では、最初のCN値に基づいてプリンシパルをデコードします。/subsystem=elytron/x500-attribute-principal-decoder=CNDecoder:add(oid="2.5.4.3",maximum-segments=1)
たとえば、完全な
DNがCN=client,CN=client-certificate,DC=example,DC=jboss,DC=orgの場合には、CNDecoderはプリンシパルをクライアントとしてデコードします。このデコードされたプリンシパルは、エイリアス値として、ksRealmに設定されたトラストストアの証明書の検索に使用します。重要デコードされたプリンシパルは、クライアントの証明書のトラストストアに設定した
エイリアス値に 指定しなければなりません。- オプションで、サブジェクト別名エクステンションを使用する Evidence Decoder が、サブジェクト別名をプリンシパルとして使用するように設定できます。詳細は、サーバーセキュリティーの設定方法ガイドの サブジェクトの別名拡張を使用した X.509 証明書の Evidence Decoder の設定 を参照してください。
ロールの割り当て用に
constant-role-mapperを追加します。この例では、
constant-role-mapperを使用してksRealmのプリンシパルにロールを割り当てますが、他のアプローチを使用することもできます。/subsystem=elytron/constant-role-mapper=constantClientCertRole:add(roles=[Admin,Guest])
security-domainを設定します。/subsystem=elytron/security-domain=exampleCertSD:add(realms=[{realm=ksRealm}],default-realm=ksRealm,permission-mapper=default-permission-mapper,principal-decoder=CNDecoder,role-mapper=constantClientCertRole)undertowサブシステムでapplication-security-domainを設定します。/subsystem=undertow/application-security-domain=exampleApplicationDomain:add(security-domain=exampleCertSD)
注記Configuration → Subsystems → Web (Undertow) → Application Security Domain に移動して、管理コンソールを使用して
undertowサブシステムのapplication-security-domainを設定できます。server-ssl-contextを更新します。/subsystem=elytron/server-ssl-context=twoWaySSC:write-attribute(name=security-domain,value=exampleCertSD) /subsystem=elytron/server-ssl-context=twoWaySSC:write-attribute(name=authentication-optional, value=true) reload
アプリケーションの
web.xmlおよびjboss-web.xmlを設定します。アプリケーションの
web.xmlおよびjboss-web.xmlは、JBoss EAP で設定したapplication-security-domainを使用するように更新する必要があります。このサンプルは、Configure Web Applications to use Elytron or Legacy Security for Authentication で確認できます。さらに、
web.xmlがCLIENT-CERTを認証方法として使用するように更新する必要があります。<login-config> <auth-method>CLIENT-CERT</auth-method> <realm-name>exampleApplicationDomain</realm-name> </login-config>