9.8. 如果 AD 用户条目不包含证书或映射数据,则配置证书映射

如果 IdM 部署与 Active Directory(AD)信任时,此用户故事描述了在 IdM 中启用证书映射所需的步骤,此用户存储在 AD 中,AD 中的用户条目既包含整个证书,也不包含证书映射数据。

先决条件

  • 用户在 IdM 中没有帐户。
  • 用户在 AD 中有一个帐户,它不包含整个证书和 altSecurityIdentities 属性,即 IdM certmapdata 属性的 AD 等效。
  • IdM 管理员已完成了以下操作之一:

    • 将整个 AD 用户证书添加到 IdM 中的 AD 用户 ID 覆盖 中。
    • 创建一个映射到证书中备用字段的证书映射规则,如 Subject Alternative Name 或用户的 SID。

9.8.1. 在 IdM Web UI 中添加一个证书映射规则

  1. 以管理员身份登录 IdM Web UI。
  2. 导航到 AuthenticationCertificate Identity Mapping RulesCertificate Identity Mapping Rules
  3. 单击 Add

    图 9.9. 在 IdM Web UI 中添加一个新的证书映射规则

    IdM Web UI 的截图,显示身份验证选项卡中的"Certificate Identity Mapping Rules"子页。突出显示右侧的"添加"按钮
  4. 输入规则名称。
  5. 输入映射规则。与存储在 IdM 中的 AD 用户条目的用户 ID 覆盖条目中的证书相比,为 IdM 提供整个证书进行身份验证:

    (userCertificate;binary={cert!bin})
    注意

    因为证书还包含作为 SAN 的用户主体名称或最新更新、证书 SID 扩展中的用户的 SID ,所以您也可以使用这些字段将证书映射到用户。例如,如果使用用户的 SID,请将此映射规则替换为 LDAPU1:(objectsid={sid})。有关证书映射的更多信息,请参阅 sss-certmap 手册页。

  6. 输入匹配的规则。例如,只允许 AD.EXAMPLE.COM 域的 AD-ROOT-CA 发布的证书进行身份验证:

    <ISSUER>CN=AD-ROOT-CA,DC=ad,DC=example,DC=com
  7. 输入域名。例如,要在 ad.example.com 域中搜索用户:

    图 9.10. 没有证书或映射数据的用户的证书映射规则

    "添加证书身份映射规则"弹出窗口的截图并填写以下字段:规则名称(必需)- 映射规则 - 匹配规则。"Priority"字段为空,"Domain name"标签旁边还有一个 Add 按钮。
  8. 单击 Add
  9. 系统安全服务守护进程(SSSD)定期重新读取证书映射规则。要强制立即载入新创建的规则,在 CLI 中重启 SSSD:

    # systemctl restart sssd

9.8.2. 在 IdM CLI 中添加证书映射规则

  1. 获得管理员凭证:

    # kinit admin
  2. 输入映射规则以及映射规则所基于的匹配规则。要获得与存储在 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 手册页。

  3. 系统安全服务守护进程(SSSD)定期重新读取证书映射规则。要强制立即载入新创建的规则,重启 SSSD:

    # systemctl restart sssd

9.8.3. 在 IdM Web UI 中添加证书到 AD 用户的 ID 覆盖中

  1. 导航到 IdentityID ViewsDefault Trust View
  2. 单击 Add

    图 9.11. 在 IdM Web UI 中添加一个新的用户 ID 覆盖

    IdM Web UI 的截图,显示 Identity 选项卡中的"ID Views"页面。右侧的 Add 按钮会被高亮显示。
  3. User to override 字段中,输入 ad_user@ad.example.com
  4. ad_user 的证书复制并粘贴到 Certificate 字段中。

    图 9.12. 为 AD 用户配置用户 ID 覆盖

    使用以下字段显示"添加用户 ID override"弹出窗口的屏幕截图:用户要覆盖(需要)- 用户登录 - GECOS - UID - GID - 证书(已填写了证书的纯文本版本)。
  5. 单击 Add

验证步骤

验证用户和证书是否已链接:

  1. 使用 sss_cache 程序在 SSSD 缓存中使 ad_user@ad.example.com 记录无效,并强制重新载入 ad_user@ad.example.com 信息:

    # sss_cache -u ad_user@ad.example.com
  2. 使用包含 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 覆盖中添加证书

  1. 获得管理员凭证:

    # kinit admin
  2. 将证书 blob 保存在名为 CERT 的新变量中:

    # CERT=$(openssl x509 -in /path/to/certificate -outform der|base64 -w0)
  3. 使用 ipa idoverrideuser-add-cert 命令将 ad_user@ad.example.com 的证书添加到用户帐户中:

    # ipa idoverrideuser-add-cert ad_user@ad.example.com --certificate $CERT

验证步骤

验证用户和证书是否已链接:

  1. 使用 sss_cache 程序在 SSSD 缓存中使 ad_user@ad.example.com 记录无效,并强制重新载入 ad_user@ad.example.com 信息:

    # sss_cache -u ad_user@ad.example.com
  2. 使用包含 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 进行身份验证。