为联合存储库中基于文件的存储库启用客户机证书登录支持

您可以在使用单个基于文件的内置存储库或多个存储库配置(包括基于文件的存储库以及其他存储库)进行配置的领域中,启用对客户机证书登录的支持。

开始之前

联合存储库配置必须包括基于文件的存储库。请参阅在“联合存储库”下面的新配置中使用单个基于文件的内置存储库主题。

关于此任务

基于文件的内置存储库的缺省配置将忽略证书登录请求,返回空搜索结果并且不显示任何错误。

如果要为基于文件的内置存储库启用客户机证书登录,请完成下列步骤以设置定制属性。

过程

  1. 在管理控制台中,单击安全性 > 全局安全性
  2. 在“用户帐户存储库”下,从“可用的领域定义”字段中选择联合存储库,然后单击配置。要配置多安全域环境中的某个特定域,请单击安全域 > domain_name。在“安全性属性”下面,展开用户领域,然后单击为此域进行定制。将领域类型选择为联合存储库,然后单击配置
  3. 在“相关项”下,单击管理存储库,然后单击 InternalFileRepository 链接。
  4. 要为基于文件的存储库启用证书登录,请在“定制属性”下输入属性名 certificateMapMode。 按照您的需求为此属性指定下列其中一个值:
    注: 属性名区分大小写,而属性值不区分大小写。
    notSupported
    将显示错误,以通知用户基于文件的存储库不支持证书登录。
    exactDNMode
    通过将 X.509 证书中的 PrincipalName 值映射至存储库中的确切专有名称 (DN) 来尝试登录。 如果找到匹配的实体,那么登录将成功。如果找不到匹配的实体,那么将显示用于陈述找不到实体的错误。
    filterDescriptorMode
    通过将证书过滤器用于映射来尝试登录。 如果找到单个匹配的实体,那么登录将成功。如果找到多个匹配的实体,那么认证将因为结果是模糊匹配而失败并将显示错误。

    如果不指定有效值,那么在初始化文件适配器期间将记录错误并将返回空搜索结果。

  5. 如果将 certificateMapMode 属性的值设置为 filterDescriptorMode,那么必须添加另一个定制属性 certificateFiltercertificateFilter 定制属性指定将客户机证书中的属性映射至存储库中条目的过滤器。
    注: 如果将 certificateMapMode 属性的值设置为 notSupportedexactDNMode,那么此步骤不是必需的。
    1. 在“定制属性”下,单击新建
    2. 在新行中,输入 certificateFilter 作为属性名。 指定过滤表达式作为此属性的值。

    此过滤器的语法或结构为 Repository attribute=${Client certificate attribute},例如 uid='${SubjectCN}'

    以下条件适用于文件存储库的证书过滤器语法:
    • 等号 (=) 左侧的过滤规范部分必须是基于文件的存储库中 PersonAccount 的有效属性。
    • 等号 (=) 右侧的过滤规范部分是客户机证书的其中一个公共属性。它必须以美元符号 ($) 和左括号 ({) 开头并以右括号 (}) 结尾。
    • 必须将所有联合存储库字符串属性的数据都放在单引号 (') 内。例如,联合存储库属性 cn 是一个字符串;所以应该将使用此属性的证书过滤器指定为 cn='${IssuerCN}'
    可以在等号 (=) 右侧的过滤规范部分上使用以下证书属性值。字符串的大小写很重要。
    • ${UniqueKey}
    • {PublicKey}
    • {PublicKey}
    • {Issuer<xx>},其中 <xx> 将替换为表示发布者专有名称的任何有效部分的字符。例如,可以使用 ${IssuerCN} 来作为发布者的公共名。
    • ${NotAfter}
    • ${NotBefore}
    • ${SerialNumber}
    • ${SigAlgName}
    • ${SigAlgOID}
    • ${SigAlgParams}
    • ${Subject<xx>},其中 <xx> 将替换为表示主体集专有名称的任何有效部分的字符。例如,可以使用 ${SubjectCN} 来作为主体集的公共名。
    • ${Version}
    以下示例是适用于文件存储库的复合证书过滤器:
    • ((cn='${IssuerCN}') and (mobile=${SerialNumber}) and (seeAlso='${SubjectDN}'))
    • ((employeeNumber=${SerialNumber}) or (seeAlso='${SubjectDN}')

    用于为 LDAP 存储库和文件存储库指定证书过滤器的语法之间有一些差异,如下表中所示。

    表 1. 适用于 LDAP 和文件存储库的证书过滤器语法之间的差异描述
    文件存储库证书过滤器 LDAP 存储库证书过滤器
    使用中缀表示法。 使用前缀表示法。
    使用逻辑运算符 andor 使用逻辑运算符 (&) 符号和竖线 (|)。
    必须将所有联合存储库字符串属性的数据都放在单引号 (') 内。 不必将所有联合存储库字符串属性的数据都放在单引号 (') 内。
    示例:
    cn='${Issuer	CN}' and mobile=${SerialNumber})
    示例:
    (& (cn=${IssuerCN}) (mobile=${SerialNumber})) 
  6. 保存配置更改并重新启动 WebSphere Application Server 以使更改生效。

使用 wsadmin 命令添加定制属性

此外,也可以使用 wsadmin 命令来添加定制属性,如下列步骤所示。

过程

  1. 输入以下命令来启动 wsadmin 工具。
    wsadmin –conntype none
  2. 使用 setIdMgrCustomProperty 命令来添加定制属性。
    $AdminTask setIdMgrCustomProperty { -id InternalFileRepository -name certificateMapMode -value mode}
    $AdminTask setIdMgrCustomProperty { -id InternalFileRepository -name certificateFilter -value filter_expression}

    例如,以下命令将搜索其 CN 具有由证书的 IssuerCN 属性指定的值的用户:

    $AdminTask setIdMgrCustomProperty { -id InternalFileRepository -name certificateFilter -value “cn='${IssuerCN}'”}

    以下命令将搜索其 CN 具有由证书的 IssuerCN 属性指定的值且其电话与证书的SerialNumber 属性相匹配的用户:

    $AdminTask setIdMgrCustomProperty { -id InternalFileRepository -name certificateFilter -value “cn='${IssuerCN}' and mobile=${SerialNumber}”}
  3. 保存配置更改。
    $AdminConfig save
  4. 重新启动 WebSphere Application Server 以使更改生效。

结果

完成这些步骤之后,就已在联合存储库中启用了对基于文件的存储库的证书登录支持,如文件适配器配置中的以下条目中所示:
<config:CustomProperties name="certificateMapMode" value="mode"/>
<config:CustomProperties name="certificateFilter" value="filter_expression"/>

如果接受证书登录请求,那么登录将成功。如果拒绝证书登录请求,那么将显示错误。

如果在联合存储库下只配置了文件存储库,那么证书登录请求的结果将如下表所述。

表 2. 只包括文件存储库的联合存储库配置中的证书登录结果
文件存储库 期望的结果
缺省行为(不添加 certificateMapMode 定制属性) 忽略证书登录请求,返回空结果且不显示任何错误
不支持证书登录(certificateMapMode 定制属性的值为 notSupported 发生 CertificateMapNotSupportedException
支持证书登录(certificateMapMode 定制属性的值为 exactDNModefilterDescriptorMode)且找不到用户 发生 EntityNotFoundException
支持证书登录(certificateMapMode 定制属性的值为 exactDNMode)且找到其 DN 与证书中的 PrincipalName 相匹配的实体 证书登录成功
支持证书登录(certificateMapMode 定制属性的值为 filterDescriptorMode)且找到单个匹配的实体 证书登录成功
支持证书登录(certificateMapMode 定制属性的值为 filterDescriptorMode)且找到多个匹配的实体 发生 CertificateMapFailedException 并显示“找到多个主体”错误消息

如果在联合存储库下配置了多个存储库,那么最终登录结果将取决于行为以及从其他存储库返回的结果。下表包含显示在各种配置场景中的错误示例。

表 3. 包括文件存储库和 LDAP 存储库的联合存储库配置中的证书登录结果
文件存储库 LDAP 存储库 期望的结果
缺省行为 支持证书登录且找到用户 证书登录成功
缺省行为 支持证书登录且找不到用户 发生 PasswordCheckFailedException
不支持证书登录 支持证书登录且找到用户 发生 CertificateMapFailedException
支持证书登录且找到用户 支持证书登录且找到用户 发生 DuplicateLogonIdException
支持证书登录且找到用户 支持证书登录且找不到用户 证书登录成功
支持证书登录且找不到用户 支持证书登录且找到用户 证书登录成功
支持证书登录且找不到用户 支持证书登录且找不到用户 发生 PasswordCheckFailedException
表 4. 包括文件存储库和本地操作系统存储库的联合存储库配置中的证书登录结果
文件存储库 本地操作系统存储库 期望的结果
缺省行为 不支持证书登录 发生 CertificateMapFailedException
不支持证书登录 不支持证书登录 发生 CertificateMapNotSupportedException
支持证书登录且找到用户 不支持证书登录 发生 CertificateMapFailedException
支持证书登录且找不到用户 不支持证书登录 发生 CertificateMapFailedException
缺省行为 支持证书登录且找到用户 证书登录成功
缺省行为 支持证书登录且找不到用户 发生 PasswordCheckFailedException
不支持证书登录 支持证书登录且找到用户 发生 CertificateMapFailedException
支持证书登录且找到用户 支持证书登录且找到用户 发生 DuplicateLogonIdException
支持证书登录且找到用户 支持证书登录且找不到用户 证书登录成功
支持证书登录且找不到用户 支持证书登录且找到用户 证书登录成功
支持证书登录且找不到用户 支持证书登录且找不到用户 发生 PasswordCheckFailedException

指示主题类型的图标 任务主题



时间戳记图标 最近一次更新时间: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=twim_filebased_cert_login
文件名:twim_filebased_cert_login.html