2.6. 証明書ベースの認証を使用するようにアイデンティティープロバイダーを設定する

SSL/TLS を使用するように SP および IDP を設定する他に、証明書ベースの認証を使用するように IDP を設定することもできます。証明書ベースの認証を使用するように IDP を設定する前に、SSL/TLS を使用するように IDP と SP を設定する必要があります。

  1. クライアント証明書とトラストストアを作成します。

    クライアントが認証に使用する証明書およびトラストストアを作成する必要があります。これらは、サーバー設定およびクライアントのブラウザーで使用する必要があります。

    クライアント証明書およびトラストストアの例

    $ keytool -genkeypair -alias client -storetype jks -keyalg RSA -keysize 2048 -keypass change_it -keystore client.jks -storepass change_it -dname "CN=client,OU=Sales,O=Systems Inc,L=Raleigh,ST=NC,C=US" -validity 730 -v
    
    $ keytool -export -alias client -keystore client.jks -storepass change_it -file client.cer
    
    $ keytool -import -file client.cer -alias client -keystore client.truststore

  2. IDP のセキュリティードメインの作成

    認証に IDP が使用する証明書ベースのログインモジュールを使用するセキュリティードメインを作成する必要があります。証明書ベースのログインモジュールの詳細は、ログインモジュールのリファレンス を参照してください。

    CertificateRoles ログインモジュールのあるセキュリティードメインの例

    /subsystem=security/security-domain=idp-cert:add
    
    /subsystem=security/security-domain=idp-cert/authentication=classic:add
    
    /subsystem=security/security-domain=idp-cert/authentication=classic/login-module=CertificateRoles:add(code=CertificateRoles,flag=optional,module-options=[("password-stacking"=>"useFirstPass"),("securityDomain"=>"idp-cert"),("verifier"=>"org.jboss.security.auth.certs.AnyCertVerifier")])
    
    /subsystem=security/security-domain=idp-cert/jsse=classic:add(truststore={url=>"/path/to/client.jks",password=>change_it})
    
    reload

    また、このセキュリティードメインを使用するよう IDP を設定する必要もあります。IDP の設定に関する詳細は、Setting up an IDP セクションを参照してください。

    注記

    また、RegExUserNameLoginModule を Certificate ログインモジュールとともに使用して、プリンシパル名からユーザー名、UID、またはその他の情報を抽出することもできます。RegExUserNameLoginModule の詳細は、ログインモジュールのリファレンス を参照してください。

  3. クライアント証明書をクライアントのブラウザーにインポートします。IDP とサーバー設定が完了したら、クライアント証明書を使用するようにクライアントのブラウザーを設定する必要があります。この設定は、ブラウザーによって異なります。クライアントのブラウザーがクライアント証明書を使用するように設定されていると、クライアントは証明書を使用して IDP で認証できるようになります。