基本証明書マップ・モード
証明書マップ・モードを使用して、 Libertyで PRINCIPAL_CN、 CUSTOM、または NOT_SUPPORTED によって X.509 証明書を基本ユーザー・レジストリーにマップすることができます。
証明書マップ・モード (certificateMapMode)
3 つの証明書マップ・モードから選択できます。 デフォルト・モードは PRINCIPAL_CN です。
- PRINCIPAL_CN
- PRINCIPAL_CN マッピング・モードの場合、証明書内の識別名 (DN) が共通名 (
cn) 相対識別名 (RDN) を含んでいる必要があります。cnRDN 値は、 server.xml ファイルのbasicRegistryエレメントで構成されているユーザーname値と一致している必要があります。 Liberty の基本ユーザー・レジストリーの構成を参照してください。 - CUSTOM
- カスタム証明書マッピング実装を提供するために、CUSTOM モードを使用し、
X509CertificateMapper実装を提供することができます。 - NOT_SUPPORTED
- NOT_SUPPORTED マッピング・モードの場合、証明書による認証の試行をレジストリーが受け取ると、
CertificateMapNotSupportedExceptionエラーがスローされます。 レジストリーが統合されておらず、スタンドアロンで実行されている場合、認証の試行は失敗します。federatedRepositories-1.0フィーチャーが使用されている場合、証明書を認証できる他の統合リポジトリーがあればCertificateMapNotSupportedExceptionエラーは無視されます。
証明書マップ・モードの構成属性
certificateMapperId基本レジストリーに使用するカスタム
com.ibm.websphere.security.X509CertificateMapper実装の ID を指定します。certificateMapperIdは CUSTOM 証明書マップ・モードで使用してください。X509CertificateMapper実装には以下の要件があります。- 引数のないコンストラクターを含んでいる必要があります。
mapCertificate(X509Certificate[])メソッドは、スレッド・セーフでなければならず、基本レジストリー内にあるかどうかの検査のためにユーザー名 (大/小文字は区別されません) を返す必要があります。
カスタム X509CertificateMapper 実装の例
基本レジストリーの X509CertificateMapper 実装の例を以下に示します。
public class CustomBasicMapper implements X509CertificateMapper {
@Override
public String mapCertificate(X509Certificate[] certificates)
throws CertificateMapNotSupportedException,
CertificateMapFailedException {
if (certificates == null || certificates.length == 0) {
throw new CertificateMapFailedException("No certificates found.");
}
LdapName dn;
try {
dn = new LdapName(certificates[0].getSubjectX500Principal().getName());
} catch (InvalidNameException e) {
throw new CertificateMapFailedException(
"The certificate subject X.500 principal is not in " +
"the form of a distinguished name.", e);
}
/*
* Return a user name from the value of the first RDN in the DN.
*/
List<Rdn> rdns = dn.getRdns();
return rdns.get(rdns.size() - 1).getValue();
}
}
BELL フィーチャーまたはユーザー・フィーチャーのいずれかを使用して、 X509CertificateMapper 実装を OSGi サービスとして Liberty で使用可能にすることができます。