2.5. 証明書を使用した認証の設定

重要

証明書ベースの認証を設定する前に、双方向 SSL を設定する必要があります。双方向 SSL の設定に関する詳細は、『サーバーセキュリティーの設定方法』の「Elytron サブシステムを使用してアプリケーションに対して双方向 SSL/TLS を有効化する」を参照してください。

  1. key-store-realm を設定します。

    /subsystem=elytron/key-store-realm=ksRealm:add(key-store=twoWayTS)

    このレルムは、クライアントの証明書が含まれるトラストストアで設定する必要があります。認証プロセスでは、双方向 SSL ハンドシェイク時にクライアントが提示するのと同じ証明書を使用します。

  2. デコーダーを作成します。

    証明書から取得したプリンシパルをデコードするには、x500-attribute-principal-decoder を作成する必要があります。以下の例では、最初の CN 値を基にしてプリンシパルをデコードします。

    /subsystem=elytron/x500-attribute-principal-decoder=CNDecoder:add(oid="2.5.4.3",maximum-segments=1)

    たとえば、完全な DNCN=client,CN=client-certificate,DC=example,DC=jboss,DC=org であった場合は、CNDecoderclient としてデコードします。このデコードされたプリンシパルは、ksRealm の値で設定したトラストストアの証明書を検索する alias 値として使用されます。

    重要

    デコードされたプリンシパル MUST は、クライアントの証明書に対してサーバーのトラストストアで設定した alias 値です。

  3. ロールを割り当てるには constant-role-mapper を追加します。

    この例では、constant-role-mapper を使用して ksRealm からプリンシパルにロールを割り当てますが、他の方法を使用することもできます。

    /subsystem=elytron/constant-role-mapper=constantClientCertRole:add(roles=[Admin,Guest])
  4. 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)
  5. undertow サブシステムで application-security-domain を設定します。

    /subsystem=undertow/application-security-domain=exampleApplicationDomain:add(security-domain=exampleCertSD)
    注記

    undertow サブシステムの application-security-domain は、ConfigurationSubsystemsWeb (Undertow)Application Security Domain に移動して管理コンソールで設定できます。

  6. 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
  7. アプリケーションの web.xml および jboss-web.xml を設定します。

    JBoss EAP で設定したapplication-security-domain 使用するように、アプリケーションの web.xml およびjboss-web.xml を更新する必要があります。この例については、Configure Web Applications to Use Elytron or Legacy Security for Authentication で参照できます。

    さらに、CLIENT-CERT を認証方法として使用するように web.xml を更新する必要があります。

    <login-config>
      <auth-method>CLIENT-CERT</auth-method>
      <realm-name>exampleApplicationDomain</realm-name>
    </login-config>