9.8. 如果 AD 用户条目不包含证书或映射数据,则配置证书映射
如果 IdM 部署与 Active Directory(AD)信任时,此用户故事描述了在 IdM 中启用证书映射所需的步骤,此用户存储在 AD 中,AD 中的用户条目既包含整个证书,也不包含证书映射数据。
先决条件
- 用户在 IdM 中没有帐户。
-
用户在 AD 中有一个帐户,它不包含整个证书和
altSecurityIdentities 属性
,即 IdMcertmapdata
属性的 AD 等效。 IdM 管理员已完成了以下操作之一:
-
将整个 AD 用户证书添加到 IdM 中的 AD
用户 ID 覆盖
中。 - 创建一个映射到证书中备用字段的证书映射规则,如 Subject Alternative Name 或用户的 SID。
-
将整个 AD 用户证书添加到 IdM 中的 AD
9.8.1. 在 IdM Web UI 中添加一个证书映射规则
- 以管理员身份登录 IdM Web UI。
-
导航到
Authentication
→Certificate Identity Mapping Rules
→Certificate Identity Mapping Rules
。 单击
Add
。图 9.9. 在 IdM Web UI 中添加一个新的证书映射规则
- 输入规则名称。
输入映射规则。与存储在 IdM 中的 AD 用户条目的用户 ID 覆盖条目中的证书相比,为 IdM 提供整个证书进行身份验证:
(userCertificate;binary={cert!bin})
注意因为证书还包含作为 SAN 的用户主体名称或最新更新、证书 SID 扩展中的用户的 SID ,所以您也可以使用这些字段将证书映射到用户。例如,如果使用用户的 SID,请将此映射规则替换为
LDAPU1:(objectsid={sid})
。有关证书映射的更多信息,请参阅sss-certmap
手册页。输入匹配的规则。例如,只允许
AD.EXAMPLE.COM
域的AD-ROOT-CA
发布的证书进行身份验证:<ISSUER>CN=AD-ROOT-CA,DC=ad,DC=example,DC=com
输入域名。例如,要在
ad.example.com
域中搜索用户:图 9.10. 没有证书或映射数据的用户的证书映射规则
-
单击
Add
。 系统安全服务守护进程(SSSD)定期重新读取证书映射规则。要强制立即载入新创建的规则,在 CLI 中重启 SSSD:
# systemctl restart sssd
9.8.2. 在 IdM CLI 中添加证书映射规则
获得管理员凭证:
# kinit admin
输入映射规则以及映射规则所基于的匹配规则。要获得与存储在 IdM 中的 AD 用户条目的用户 ID 覆盖条目中的证书相比的用于认证的整个证书,只允许
AD.EXAMPLE.COM
域的AD-ROOT-CA
发布的证书进行验证:# ipa certmaprule-add
simpleADrule
--matchrule '<ISSUER>CN=AD-ROOT-CA,DC=ad,DC=example,DC=com' --maprule '(userCertificate;binary={cert!bin})' --domain ad.example.com ------------------------------------------------------- Added Certificate Identity Mapping Rule "simpleADrule" ------------------------------------------------------- Rule name: simpleADrule Mapping rule: (userCertificate;binary={cert!bin}) Matching rule: <ISSUER>CN=AD-ROOT-CA,DC=ad,DC=example,DC=com Domain name: ad.example.com Enabled: TRUE注意因为证书还包含作为 SAN 的用户主体名称或最新更新、证书 SID 扩展中的用户的 SID ,所以您也可以使用这些字段将证书映射到用户。例如,如果使用用户的 SID,请将此映射规则替换为
LDAPU1:(objectsid={sid})
。有关证书映射的更多信息,请参阅sss-certmap
手册页。系统安全服务守护进程(SSSD)定期重新读取证书映射规则。要强制立即载入新创建的规则,重启 SSSD:
# systemctl restart sssd
9.8.3. 在 IdM Web UI 中添加证书到 AD 用户的 ID 覆盖中
-
导航到
Identity
→ID Views
→Default Trust View
。 单击
Add
。图 9.11. 在 IdM Web UI 中添加一个新的用户 ID 覆盖
-
在
User to override
字段中,输入ad_user@ad.example.com
。 将
ad_user
的证书复制并粘贴到Certificate
字段中。图 9.12. 为 AD 用户配置用户 ID 覆盖
-
单击
Add
。
验证步骤
验证用户和证书是否已链接:
使用
sss_cache
程序在 SSSD 缓存中使ad_user@ad.example.com
记录无效,并强制重新载入ad_user@ad.example.com
信息:# sss_cache -u ad_user@ad.example.com
使用包含 AD 用户证书的文件名称运行
ipa certmap-match
命令:# ipa certmap-match ad_user_cert.pem -------------- 1 user matched -------------- Domain: AD.EXAMPLE.COM User logins: ad_user@ad.example.com ---------------------------- Number of entries returned 1 ----------------------------
输出确认,您具有的证书验证数据被添加到 ad_user@ad.example.com
,并存在在 Adding a certificate mapping rule if the AD user entry contains no certificate or mapping data 中定义的相应的映射规则。这意味着,您可以使用与定义的证书映射数据匹配的证书作为 ad_user@ad.example.com
进行身份验证。
其它资源
9.8.4. 在 IdM CLI 中在 AD 用户的 ID 覆盖中添加证书
获得管理员凭证:
# kinit admin
将证书 blob 保存在名为
CERT
的新变量中:# CERT=$(openssl x509 -in /path/to/certificate -outform der|base64 -w0)
使用
ipa idoverrideuser-add-cert
命令将ad_user@ad.example.com
的证书添加到用户帐户中:# ipa idoverrideuser-add-cert ad_user@ad.example.com --certificate $CERT
验证步骤
验证用户和证书是否已链接:
使用
sss_cache
程序在 SSSD 缓存中使ad_user@ad.example.com
记录无效,并强制重新载入ad_user@ad.example.com
信息:# sss_cache -u ad_user@ad.example.com
使用包含 AD 用户证书的文件名称运行
ipa certmap-match
命令:# ipa certmap-match ad_user_cert.pem -------------- 1 user matched -------------- Domain: AD.EXAMPLE.COM User logins: ad_user@ad.example.com ---------------------------- Number of entries returned 1 ----------------------------
输出确认,您具有的证书验证数据被添加到 ad_user@ad.example.com
,并存在在 Adding a certificate mapping rule if the AD user entry contains no certificate or mapping data 中定义的相应的映射规则。这意味着,您可以使用与定义的证书映射数据匹配的证书作为 ad_user@ad.example.com
进行身份验证。
其它资源