Microsoft基于证书的身份验证技术概念

本文介绍技术概念,以说明Microsoft基于证书的身份验证(CBA)的工作原理。 获取技术背景,以便更好地了解如何在租户中设置和管理 Microsoft Entra CBA。

Microsoft Entra 基于证书的身份验证如何工作?

下图描述了用户尝试登录到Microsoft Entra CBA 的租户中的应用程序时会发生什么情况。

此图显示了Microsoft基于证书的身份验证中的步骤概述。

以下步骤总结了 Microsoft Entra CBA 过程:

  1. 用户尝试访问应用程序,例如 MyApps 门户

  2. 如果用户尚未登录,则会重定向到位于Microsoft Entra ID 用户登录页 https://login.microsoftonline.com/

  3. 他们在 Microsoft Entra 登录页上输入用户名,然后选择“ 下一步”。 Microsoft Entra ID 使用租户名称完成主领域发现。 它使用用户名在租户中查找用户。

    显示 MyApps 门户的登录页的屏幕截图。

  4. Microsoft Entra ID 检查是否为租户设置了 CBA。 如果设置了 CBA,用户会看到一个链接,用于在密码页上 使用证书或智能卡 。 如果用户看不到登录链接,请确保为租户设置了 CBA。

    有关详细信息,请参阅 如何启用 Microsoft Entra CBA?

    注意

    如果为租户设置了 CBA,则所有用户都会在密码登录页上看到 “使用证书或智能卡 ”链接。 但是,只有 CBA 范围内的用户才能成功对使用 Microsoft Entra ID 作为其标识提供者的应用程序进行身份验证。

    显示使用证书或智能卡的选项的屏幕截图。

    如果使其他身份验证方法可用(如手机登录或安全密钥),则用户可能会看到其他登录对话框。

    显示 FIDO2 身份验证也可用时登录对话框的屏幕截图。

  5. 用户选择 CBA 后,客户端会重定向到证书身份验证终结点。 对于公共Microsoft Entra ID,证书身份验证终结点为 https://certauth.login.microsoftonline.com。 对于 Azure 政府版,证书身份验证终结点为 https://certauth.login.microsoftonline.us

    终结点执行传输层安全性(TLS)相互身份验证,并请求客户端证书作为 TLS 握手的一部分。 此请求的条目将显示在登录日志中。

    注意

    管理员应允许访问用户登录页和 *.certauth.login.microsoftonline.com 云环境的证书身份验证终结点。 在证书身份验证终结点上关闭 TLS 检查,以确保客户端证书请求在 TLS 握手过程中成功。

    确保关闭 TLS 检查也适用于具有新 URL 的颁发者提示。 不要使用租户 ID 硬编码 URL。 租户 ID 可能会更改企业到企业(B2B)用户。 使用正则表达式允许在关闭 TLS 检查时同时运行以前的 URL 和新 URL。 例如,请根据代理使用 *.certauth.login.microsoftonline.com*certauth.login.microsoftonline.com。 在 Azure 政府中,使用 *.certauth.login.microsoftonline.us*certauth.login.microsoftonline.us

    除非允许访问,否则如果启用 颁发者提示,CBA 将失败。

  6. Microsoft Entra ID 请求客户端证书。 用户选择客户端证书,然后选择“ 确定”。

    显示证书选取器的屏幕截图。

  7. Microsoft Entra ID 验证证书吊销列表(CRL),以确保证书未吊销且有效。 Microsoft Entra ID 通过使用租户上 配置的用户名绑定 将证书字段值映射到用户属性值来标识用户。

  8. 如果通过需要多重身份验证的 Microsoft Entra 条件访问策略找到唯一用户,并且 证书身份验证绑定规则 满足 MFA,Microsoft Entra ID 立即登录用户。 如果需要 MFA,但证书仅满足单个因素,如果用户已注册,则无密码登录和 FIDO2 作为第二个因素提供。

  9. Microsoft Entra ID 通过发送回主刷新令牌来指示登录成功,从而完成登录过程。

如果用户登录成功,则用户可以访问应用程序。

颁发者提示(预览版)

颁发者提示在 TLS 握手过程中发送回 受信任的 CA 指示器。 受信任的 CA 列表设置为租户上传到 Microsoft Entra 信任存储的 CA 的主题。 浏览器客户端或本机应用程序客户端可以使用服务器发送回的提示来筛选证书选取器中显示的证书。 客户端仅显示信任存储中的 CA 颁发的身份验证证书。

打开颁发者提示

若要打开颁发者提示,请选中 “颁发者提示 ”复选框。 身份验证策略管理员应在确保正确更新具有 TLS 检查设置的代理后选择“我确认”,然后保存更改。

注意

如果组织具有使用 TLS 检查的防火墙或代理,请确认你关闭了能够匹配任何名称的 [*.]certauth.login.microsoftonline.comCA 终结点的 TLS 检查,并根据正在使用的特定代理进行自定义。

显示如何打开颁发者提示的屏幕截图。

注意

打开颁发者提示后,CA URL 的格式 <tenantId>.certauth.login.microsoftonline.com为 。

显示打开颁发者提示后证书选取器屏幕截图。

CA 信任存储更新传播

打开颁发者提示并从信任存储中添加、更新或删除 CA 后,在颁发者提示传播回客户端时,可能会出现长达 10 分钟的延迟。 身份验证策略管理员应在颁发者提示可供启动传播后使用证书登录。

在传播提示之前,用户无法使用新 CA 颁发的证书进行身份验证。 在传播 CA 信任存储更新时,用户会看到以下错误消息:

显示用户是否正在进行更新的错误的屏幕截图。

具有单因素 CBA 的 MFA

Microsoft Entra CBA 符合第一因素身份验证和第二重身份验证的资格。

下面是一些受支持的组合:

  • CBA (第一因素) 和 通行密钥 (第二因素)
  • CBA (第一因素) 和 无密码手机登录 (第二因素)
  • CBA(第一因素)和 FIDO2 安全密钥 (第二因素)
  • 密码(第一因素)和 CBA (第二因素) (预览版)

注意

目前,在 iOS 上使用 CBA 作为第二个因素存在 已知问题 ,并在 iOS 上被阻止。 我们正在努力解决问题。

用户必须使用 Microsoft Entra CBA 在登录之前获取 MFA 并注册无密码登录或 FIDO2。

重要说明

如果用户的用户名出现在 CBA 方法设置中,则被视为支持 MFA。 在此方案中,用户无法使用其标识作为身份验证的一部分来注册其他可用方法。 请确保没有有效证书的用户不包含在 CBA 方法设置中。 有关身份验证工作原理的详细信息,请参阅 Microsoft Entra 多重身份验证

使用单因素证书获取 MFA 功能的选项

Microsoft Entra CBA 可以是单因素或多重因素,具体取决于租户配置。 启用 CBA 可使用户能够完成 MFA。 具有单因素证书的用户必须使用另一个因素来完成 MFA。

如果不首先满足 MFA,我们不允许注册其他方法。 如果用户未注册任何其他 MFA 方法且位于 CBA 范围内,则用户无法使用标识证明来注册其他身份验证方法并获取 MFA。

如果支持 CBA 的用户只有单因素证书并且需要完成 MFA,请选择以下选项 之一 以对用户进行身份验证:

  • 用户可以输入密码并使用单因素证书。
  • 身份验证策略管理员可以颁发临时访问通行证。
  • 身份验证策略管理员可以添加电话号码,并允许对用户帐户进行语音或短信身份验证。

如果支持 CBA 的用户尚未颁发证书并需要完成 MFA,请选择以下选项 之一 以对用户进行身份验证:

  • 身份验证策略管理员可以颁发临时访问通行证。
  • 身份验证策略管理员可以添加电话号码,并允许对用户帐户进行语音或短信身份验证。

如果支持 CBA 的用户无法使用多重证书,例如,如果使用的是没有智能卡支持的移动设备,但需要完成 MFA,请选择以下选项 之一 来对用户进行身份验证:

  • 身份验证策略管理员可以颁发临时访问通行证。
  • 用户可以注册另一个 MFA 方法(当用户 可以在 设备上使用多重证书时)。
  • 身份验证策略管理员可以添加电话号码,并允许对用户帐户进行语音或短信身份验证。

使用 CBA 设置无密码手机登录

若要使无密码手机登录正常工作,请首先通过用户的移动应用关闭旧通知。

  1. 以至少身份验证策略管理员身份登录到 Microsoft Entra 管理中心

  2. 完成 “启用无密码手机登录身份验证”中所述的步骤。

    重要说明

    请确保选择 “无密码 ”选项。 对于添加到无密码手机登录的任何组,必须将 身份验证模式 的值更改为 “无密码”。 如果选择 “任何”,则 CBA 和无密码登录不起作用。

  3. 选择 Entra ID>多重身份验证>其他基于云的多重身份验证设置

    显示如何配置 MFA 设置的屏幕截图。

  4. “验证”选项下,清除 “通过移动应用的通知 ”复选框,然后选择“ 保存”。

    显示如何通过移动应用选项删除通知的屏幕截图。

使用单因素证书和无密码登录进行 MFA 身份验证流

请考虑具有单因素证书并配置为无密码登录的用户的示例。 作为用户,你将完成以下步骤:

  1. 输入用户主体名称(UPN),然后选择“ 下一步”。

    显示如何输入用户主体名称的屏幕截图。

  2. 选择“ 使用证书或智能卡”。

    显示如何使用证书登录的屏幕截图。

    如果使其他身份验证方法可用(如手机登录或安全密钥),则用户可能会看到其他登录对话框。

    显示使用证书登录的替代方法的屏幕截图。

  3. 在客户端证书选取器中,选择正确的用户证书,然后选择“ 确定”。

    显示如何选择证书的屏幕截图。

  4. 由于证书配置为单因素身份验证的强度,因此需要满足 MFA 要求的第二个因素。 登录对话框中显示了可用的第二个因素。 在这种情况下,这是无密码登录。 选择“在我的 Microsoft Authenticator 应用上批准请求”。

    显示完成第二重请求的屏幕截图。

  5. 你在手机上收到通知。 选择 “批准登录?” 显示电话审批请求的屏幕截图。

  6. 在 Microsoft Authenticator 中,输入在浏览器或应用中看到的数字。

    显示数字匹配项的屏幕截图。

  7. 选择 “是”,可以进行身份验证并登录。

身份验证绑定策略

身份验证绑定策略有助于将身份验证强度设置为单因素或多重身份验证。 身份验证策略管理员可以将默认方法从单因素更改为多重。 管理员还可以通过使用IssuerAndSubjectPolicyOIDIssuerPolicyOID证书中的配置来设置自定义策略配置。

证书强度

身份验证策略管理员可以确定证书强度是单因素还是多重证书。 有关详细信息,请参阅将 NIST 身份验证保障级别映射到 Microsoft Entra 身份验证方法的文档,该方法基于 NIST 800-63B SP 800-63B、数字标识准则:身份验证和生命周期 Mgmt

多因素证书身份验证

当用户具有多重证书时,他们只能使用证书执行 MFA。 但是,身份验证策略管理员应确保证书受到 PIN 或生物识别的保护,以被视为多重。

多个身份验证策略绑定规则

可以使用不同的证书属性创建多个自定义身份验证绑定策略规则。 例如,使用颁发者和策略 OID,或仅使用策略 OID,或仅使用颁发者。

以下顺序确定自定义规则重叠时的身份验证保护级别:

  1. 颁发者和策略 OID 规则优先于策略 OID 规则。 策略 OID 规则优先于证书颁发者规则。
  2. 首先评估颁发者和策略 OID 规则。 如果具有颁发者 CA1 的自定义规则和具有 MFA 的策略 OID 1.2.3.4.5 ,则只有满足颁发者值和策略 OID 的证书 A 获得 MFA。
  3. 将评估使用策略 OID 的自定义规则。 如果证书 A 具有策略 OID,并且基于具有策略 OID 的1.2.3.4.51.2.3.4.5.6证书和派生凭据 B,并且自定义规则定义为策略 OID,该策略 OID 具有 MFA 的值1.2.3.4.5,则只有证书 A 满足 MFA。 凭据 B 仅满足单因素身份验证。 如果用户在登录期间使用了派生凭据并配置了 MFA,则会要求用户获得第二个因素才能成功进行身份验证。
  4. 如果多个策略 OID 之间存在冲突(例如,当证书有两个策略 OID 时,其中一个绑定到单因素身份验证,另一个绑定到 MFA),则将证书视为单因素身份验证。
  5. 将评估使用颁发者 CA 的自定义规则。 如果证书具有匹配的策略 OID 和颁发者规则,则始终先检查策略 OID。 如果未找到策略规则,则会检查颁发者绑定。 策略 OID 的强身份验证绑定优先级高于颁发者。
  6. 如果一个 CA 绑定到 MFA,则此 CA 颁发的所有用户证书都满足 MFA 条件。 相同的逻辑适用于单因素身份验证。
  7. 如果一个策略 OID 绑定到 MFA,则包含此策略 OID 的所有用户证书都作为 OID 之一限定为 MFA。 (用户证书可以有多个策略 OID。)
  8. 一个证书颁发者只能有一个有效的强身份验证绑定(也就是说,证书不能绑定到单因素身份验证和 MFA)。

重要说明

目前,在正在解决的已知问题中,如果身份验证策略管理员同时使用颁发者和策略 OID 创建 CBA 策略规则,则某些设备注册方案会受到影响。

受影响的方案包括:

  • Windows Hello 企业版注册
  • FIDO2 安全密钥注册
  • Windows 无密码手机登录

使用 Workplace Join、Microsoft Entra ID 和 Microsoft Entra 混合联接方案进行设备注册不会受到影响。 使用颁发者 策略 OID 的 CBA 策略规则不受影响。

若要缓解此问题,身份验证策略管理员应完成以下选项 之一

  • 编辑当前同时使用颁发者和策略 OID 删除颁发者或策略 ID 要求的 CBA 策略规则。
  • 删除当前同时使用颁发者和策略 OID 的身份验证策略规则,然后创建仅使用颁发者或策略 OID 的规则。

用户名绑定策略

用户名绑定策略有助于验证用户的证书。 默认情况下,证书中的使用者可选名称 (SAN) 主体名称映射到 userPrincipalName 用户对象的属性以标识用户。

使用证书绑定实现更高的安全性

Microsoft Entra 支持使用证书绑定的七种方法。 通常,如果映射类型基于无法重复使用的标识符(如SubjectKeyIdentifier()或SKISHA1PublicKey则它们被视为高相关性。 这些标识符传达了一个更高的保证,即只能使用单个证书对用户进行身份验证。

基于用户名和电子邮件地址的映射类型被视为低相关性。 Microsoft Entra ID 实现三个映射,这些映射被视为基于可重用标识符的低相关性。 其他则被视为高相关性绑定。 有关详细信息,请参阅 certificateUserIds

证书映射字段 中的值示例 certificateUserIds 用户对象属性 类型
PrincipalName X509:<PN>bob@woodgrove.com userPrincipalName
onPremisesUserPrincipalName
certificateUserIds
低相关性
RFC822Name X509:<RFC822>user@woodgrove.com userPrincipalName
onPremisesUserPrincipalName
certificateUserIds
低相关性
IssuerAndSubject X509:<I>DC=com,DC=contoso,CN=CONTOSO-DC-CA<S>DC=com,DC=contoso,OU=UserAccounts,CN=mfatest certificateUserIds 低相关性
Subject X509:<S>DC=com,DC=contoso,OU=UserAccounts,CN=mfatest certificateUserIds 低相关性
SKI X509:<SKI>aB1cD2eF3gH4iJ5kL6-mN7oP8qR= certificateUserIds 高相关性
SHA1PublicKey X509:<SHA1-PUKEY>aB1cD2eF3gH4iJ5kL6-mN7oP8qR
整个 SHA1PublicKey 证书内容的 SHA1 哈希(包括公钥)位于证书的 指纹 属性中。
certificateUserIds 高相关性
IssuerAndSerialNumber X509:<I>DC=com,DC=contoso,CN=CONTOSO-DC-CA<SR>cD2eF3gH4iJ5kL6mN7-oP8qR9sT
若要获取序列号的正确值,请运行以下命令并存储如下所示 certificateUserIds的值:
语法:
certutil –dump –v [~certificate path~] >> [~dumpFile path~]
示例
certutil -dump -v firstusercert.cer >> firstCertDump.txt
certificateUserIds 高相关性

重要说明

可以使用 CertificateBasedAuthentication PowerShell 模块 在证书中查找用户的正确 certificateUserIds 值。

定义和替代相关性绑定

身份验证策略管理员可以配置用户是否可以使用低相关性或高相关性用户名绑定映射进行身份验证。

为适用于所有用户的租户设置 所需的关联绑定 。 若要替代租户范围的默认值,请基于颁发者和策略 OID,或仅基于策略 OID 或仅创建颁发者创建自定义规则。

多个用户名策略绑定规则

若要解析多个用户名策略绑定规则,Microsoft Entra ID 使用最高优先级(最低数字)绑定:

  1. 使用用户名或 UPN 查找用户对象。
  2. 获取由属性排序 priority 的 CBA 方法配置中由身份验证策略管理员设置的所有用户名绑定的列表。 目前,优先级不会显示在管理中心。 Microsoft Graph 返回 priority 每个绑定的属性。 然后,优先级用于评估过程。
  3. 如果租户配置了高关联绑定,或者证书值与需要高关联绑定的自定义规则匹配,则从列表中删除所有低关联绑定。
  4. 评估列表中的每个绑定,直到身份验证成功。
  5. 如果已配置绑定的 X.509 证书字段在提供的证书中,Microsoft Entra ID 会将该证书字段中的值与用户对象属性值相匹配。
    • 如果找到匹配项,则表示用户身份验证成功。
    • 如果未找到匹配项,请移动到下一个优先级绑定。
  6. 如果 X.509 证书字段不在显示的证书上,请移动到下一个优先级绑定。
  7. 验证所有配置的用户名绑定,直到其中一个绑定结果匹配且用户身份验证成功。
  8. 如果在配置的任何用户名绑定中都找不到匹配项,则用户身份验证会失败。

使用多个用户名绑定保护Microsoft Entra 配置

每个Microsoft Entra 用户对象属性都可用于将证书绑定到 Microsoft Entra 用户帐户(userPrincipalNameonPremiseUserPrincipalNamecertificateUserIds)具有唯一的约束,以确保证书仅匹配单个Microsoft Entra 用户帐户。 但是,Microsoft Entra CBA 支持用户名绑定策略中的多个绑定方法。 身份验证策略管理员可以容纳多个Microsoft Entra 用户帐户配置中使用的一个证书。

重要说明

如果配置多个绑定,Microsoft Entra CBA 身份验证仅与最低关联绑定一样安全,因为 CBA 会验证每个绑定以对用户进行身份验证。 要防止单个证书与多个 Microsoft Entra 帐户匹配的情况,身份验证策略管理员可以:

  • 在用户名绑定策略中配置单个绑定方法。
  • 如果租户配置了多个绑定方法,并且不希望允许一个证书映射到多个帐户,身份验证策略管理员必须确保策略中配置的所有允许方法都映射到同一Microsoft Entra 帐户。 所有用户帐户应具有与所有绑定匹配的值。
  • 如果租户配置了多个绑定方法,身份验证策略管理员应确保它们没有多个低关联绑定。

例如,映射有PrincipalNameUPN两个用户名绑定,并且 SubjectKeyIdentifierSKI) 映射到 certificateUserIds。 如果希望证书仅用于单个帐户,身份验证策略管理员必须确保该帐户具有证书中存在的 UPN。 然后,管理员在同一帐户的属性中SKI实现certificateUserIds映射。

支持一个 Microsoft Entra 用户帐户对应多个证书 (M:1)

在某些情况下,组织为单个标识颁发多个证书。 它可能是移动设备的派生凭据,但也可能是辅助智能卡或支持 X.509 凭据持有者的设备(例如 YubiKey)。

仅限云的帐户(M:1)

对于仅限云的帐户,可以通过使用唯一值填充 certificateUserIds 字段来标识每个证书来映射要使用的最多五个证书。 若要映射证书,在管理中心,请转到 “授权信息 ”选项卡。

如果组织使用类似高相关性绑定 IssuerAndSerialNumber,则中的 certificateUserIds 值可能如以下示例所示:

X509:<I>DC=com,DC=contoso,CN=CONTOSO-DC-CA<SR>cD2eF3gH4iJ5kL6mN7-oP8qR9sT
X509:<I>DC=com,DC=contoso,CN=CONTOSO-DC-CA<SR>eF3gH4iJ5kL6mN7oP8-qR9sT0uV

在此示例中,第一个值表示 X509Certificate1。 第二个值表示 X509Certificate2。 用户可以在登录时显示任一证书。 如果 CBA 用户名绑定设置为指向 certificateUserIds 字段以查找特定绑定类型(在此示例中为), IssuerAndSerialNumber则用户已成功登录。

混合同步帐户 (M:1)

对于同步的帐户,可以映射多个证书。 在本地 Active Directory 中,使用标识每个证书的值填充 altSecurityIdentities 字段。 如果组织使用高关联绑定(即强身份验证), IssuerAndSerialNumber则值可能如以下示例所示:

X509:<I>DC=com,DC=contoso,CN=CONTOSO-DC-CA<SR>cD2eF3gH4iJ5kL6mN7-oP8qR9sT
X509:<I>DC=com,DC=contoso,CN=CONTOSO-DC-CA<SR>eF3gH4iJ5kL6mN7oP8-qR9sT0uV

在此示例中,第一个值表示 X509Certificate1。 第二个值表示 X509Certificate2。 然后,必须将值同步到 certificateUserIds Microsoft Entra ID 中的字段。

支持多个 Microsoft Entra 用户帐户对应同一个证书 (1:M)

在某些情况下,组织要求用户使用同一证书对多个标识进行身份验证。 它可能适用于管理帐户或开发人员或临时职责帐户。

在本地 Active Directory 中 altSecurityIdentities ,字段填充证书值。 登录期间使用提示将 Active Directory 定向到预期帐户以检查登录。

Microsoft Entra CBA 具有不同的过程,并且不包含任何提示。 相反,主领域发现标识预期的帐户并检查证书值。 Microsoft Entra CBA 还会在字段中强制实施唯一性 certificateUserIds 。 两个帐户无法填充相同的证书值。

重要说明

使用相同的凭据对不同的 Microsoft Entra 帐户进行身份验证不是安全配置。 建议不允许将单个证书用于多个Microsoft Entra 用户帐户。

仅限云的帐户(1:M)

对于仅限云的帐户,请创建多个用户名绑定并将唯一值映射到使用证书的每个用户帐户。 使用其他用户名绑定对每个帐户的访问权限进行身份验证。 此身份验证级别适用于单个目录或租户的边界。 如果每个帐户的值保持唯一性,身份验证策略管理员可以映射证书,以将其用于其他目录或租户。

使用 certificateUserIds 标识证书的唯一值填充字段。 若要填充字段,在管理中心中,转到 “授权信息 ”选项卡。

如果组织使用高关联绑定(即强身份验证), IssuerAndSerialNumberSKI值可能如以下示例所示:

用户名绑定:

  • IssuerAndSerialNumber > certificateUserIds
  • SKI > certificateUserIds

用户帐户 certificateUserIds 值:
X509:<I>DC=com,DC=contoso,CN=CONTOSO-DC-CA<SR>aB1cD2eF3gH4iJ5kL6-mN7oP8qR
X509:<SKI>cD2eF3gH4iJ5kL6mN7-oP8qR9sT

现在,当任一用户在登录时显示相同的证书时,用户成功登录,因为他们的帐户与该证书上的唯一值匹配。 一个帐户通过使用 IssuerAndSerialNumber 绑定进行身份验证,另一个帐户通过 SKI 绑定进行身份验证。

注意

可以以这种方式使用的帐户数目受租户中配置的用户名绑定数目限制。 如果组织仅使用高关联绑定,则支持的最大帐户数为 3。 如果组织还使用低关联绑定,则数字将增加到七个帐户:一个PrincipalName、一个、一RFC822Name个、一SKISHA1PublicKey个、IssuerAndSubject一个、一个IssuerAndSerialNumber和一个Subject

混合同步帐户 (1:M)

同步的帐户需要不同的方法。 尽管身份验证策略管理员可以将唯一值映射到使用证书的每个用户帐户,但将所有值填充到 Microsoft Entra ID 中的每个帐户的常见做法使得此方法变得困难。 相反,Microsoft Entra Connect 应将每个帐户的值筛选为Microsoft Entra ID 中填充到帐户中的唯一值。 唯一性规则适用于单个目录或租户的边界。 如果每个帐户的值保持唯一性,身份验证策略管理员可以映射证书,以将其用于其他目录或租户。

组织可能还具有多个 Active Directory 林,这些林将用户贡献给单个Microsoft Entra 租户。 在这种情况下,Microsoft Entra Connect 将筛选器应用于每个具有相同目标的 Active Directory 林:仅填充云帐户的特定唯一值。

使用 altSecurityIdentities 标识证书的值填充 Active Directory 中的字段。 包括该用户帐户类型(例如 detailedadmindeveloper) 的特定证书值。 在 Active Directory 中选择一个键属性。 该属性告知同步用户正在评估的用户帐户类型(例如 msDS-cloudExtensionAttribute1)。 使用要使用的用户类型值填充此属性,例如 detailedadmindeveloper。 如果该帐户是用户的主要帐户,则该值可以为空或 NULL。

检查帐户是否类似于以下示例:

林 1:帐户 1 (bob@woodgrove.com):
X509:<SKI>aB1cD2eF3gH4iJ5kL6mN7oP8qR
X509:<SHA1-PUKEY>cD2eF3gH4iJ5kL6mN7oP8qR9sT
X509:<PN>bob@woodgrove.com

林 1:帐户 2 (bob-admin@woodgrove.com):
X509:<SKI>aB1cD2eF3gH4iJ5kL6mN7oP8qR
X509:<SHA1-PUKEY>cD2eF3gH4iJ5kL6mN7oP8qR9sT
X509:<PN>bob@woodgrove.com

林 2:ADAccount1 (bob-tdy@woodgrove.com):
X509:<SKI>aB1cD2eF3gH4iJ5kL6mN7oP8qR
X509:<SHA1-PUKEY>cD2eF3gH4iJ5kL6mN7oP8qR9sT
X509:<PN>bob@woodgrove.com

然后,必须将这些值同步到 certificateUserIds Microsoft Entra ID 中的字段。

同步到 certificateUserIds

  1. 配置 Microsoft Entra Connect,将 alternativeSecurityIds 字段添加到 metaverse。
  2. 对于每个本地 Active Directory 林,请配置优先级较高的新自定义入站规则(数字低于 100)。 添加包含 Expression 字段作为源的 altSecurityIdentities 转换。 目标表达式使用所选和填充的键属性,并使用与定义的用户类型的映射。

例如:

IIF((IsPresent([msDS-cloudExtensionAttribute1]) && IsPresent([altSecurityIdentities])), 
    IIF((InStr(LCase([msDS-cloudExtensionAttribute1]),LCase("detailee"))>0), 
    Where($item,[altSecurityIdentities],(InStr($item, "X509:<SHA1-PUKEY>")>0)), 
        IIF((InStr(LCase([msDS-cloudExtensionAttribute1]),LCase("developer"))>0), 
        Where($item,[altSecurityIdentities],(InStr($item, "X509:<SKI>")>0)), NULL) ), 
    IIF(IsPresent([altSecurityIdentities]), 
    Where($item,[altSecurityIdentities],(BitAnd(InStr($item, "X509:<I>"),InStrRev($item, "<SR>"))>0)), NULL) 
)

在此示例中, altSecurityIdentities 首先检查键属性 msDS-cloudExtensionAttribute1 ,以查看它们是否已填充。 如果未填充它们, altSecurityIdentities 则检查它是否已填充。 如果为空,则将其设置为 NULL。 否则,帐户是默认方案。

在此示例中,仅对映射进行筛选 IssuerAndSerialNumber 。 如果填充了键属性,则检查该值是否等于定义的用户类型之一。 在此示例中,如果该值为detailed,则根据该值SHA1PublicKeyaltSecurityIdentities进行筛选。 如果值为developer,则根据该值SubjectKeyIssueraltSecurityIdentities进行筛选。

可能会遇到特定类型的多个证书值。 例如,你可能会看到多个值或多个PrincipalNameSKI值或SHA1-PUKEY值。 筛选器获取所有值,并将其同步到Microsoft Entra ID 中,而不仅仅是它找到的第一个值。

下面是第二个示例,演示如何在控件属性为空时推送空值:

IIF((IsPresent([msDS-cloudExtensionAttribute1]) && IsPresent([altSecurityIdentities])), 
    IIF((InStr(LCase([msDS-cloudExtensionAttribute1]),LCase("detailee"))>0), 
    Where($item,[altSecurityIdentities],(InStr($item, "X509:<SHA1-PUKEY>")>0)), 
        IIF((InStr(LCase([msDS-cloudExtensionAttribute1]),LCase("developer")>0), 
        Where($item,[altSecurityIdentities],(InStr($item, "X509:<SKI>")>0)), NULL) ), 
    IIF(IsPresent([altSecurityIdentities]), 
    AuthoritativeNull, NULL) 
) 

如果值与 altSecurityIdentities 控件属性中的任何搜索值不匹配,则会传递一个 AuthoritativeNull 值。 此值可确保忽略填充 alternativeSecurityId 的先前或后续规则。 结果为 Microsoft Entra ID 中的空。

同步空值:

  1. 配置优先级较低的新自定义出站规则(高数字,高于 160,但从列表底部)。
  2. 添加直接转换,其中 alternativeSecurityIds 字段作为源,字段 certificateUserIds 作为目标。
  3. 运行同步周期以在 Microsoft Entra ID 中完成数据填充。

确保每个租户中的 CBA 都配置了指向从证书映射的字段类型的用户名绑定 certificateUserIds 。 现在,这些用户中的任何一个都可以在登录时显示证书。 根据 certificateUserIds 字段验证证书的唯一值后,用户已成功登录。

证书颁发机构(CA)范围(预览版)

Microsoft Entra 中的 CA 范围允许租户管理员将特定 CA 的使用限制为定义的用户组。 此功能通过确保只有授权用户才能使用特定 CA 颁发的证书进行身份验证,从而增强 CBA 的安全性和管理性。

CA 范围适用于跨不同用户群体使用多个 CA 的多 PKI 或 B2B 方案。 它有助于防止意外访问,并支持遵从组织策略。

主要优势

  • 将证书用于特定用户组
  • 通过多个 CA 支持复杂的 PKI 环境
  • 提供增强保护,防止证书滥用或泄露
  • 通过登录日志和监视工具查看 CA 使用情况

管理员可以使用 CA 范围来定义将 CA(由其 SKI 标识)与特定Microsoft Entra 组关联的规则。 当用户尝试使用证书进行身份验证时,系统将检查证书的颁发 CA 是否限定为包含该用户的组。 Microsoft Entra 继续执行 CA 链。 它应用所有范围规则,直到用户在所有范围规则中的一个组中找到。 如果用户不在作用域组中,身份验证会失败,即使证书无效也是如此。

设置 CA 范围功能

  1. 以至少身份验证策略管理员身份登录到 Microsoft Entra 管理中心

  2. 转到基于证书>身份验证的 > 身份验证方法。

  3. “配置”下,转到 证书颁发者范围策略

    显示 CA 范围策略的屏幕截图。

  4. 选择 “添加规则”。

    显示如何添加 CA 范围规则的屏幕截图。

  5. 选择“按 PKI 筛选 CA”

    经典 CA 显示经典 CA 存储中的所有 CA。 选择特定的 PKI 会显示所选 PKI 中的所有 CA。

  6. 选择 PKI。

    显示 CA 范围 PKI 筛选器的屏幕截图。

  7. 证书颁发者列表显示所选 PKI 中的所有 CA。 选择证书颁发机构以创建范围规则。

    显示如何在 CA 范围中选择 CA 的屏幕截图。

  8. 选择 “添加组”。

    显示 CA 范围中的“添加组”选项的屏幕截图。

  9. 选择一个组。

    显示 CA 范围中的“选择组”选项的屏幕截图。

  10. 选择 “添加” 以保存规则。

    显示 CA 范围中的“保存规则”选项的屏幕截图。

  11. 选中 “我确认 ”复选框,然后选择“ 保存”。

    显示 CA 范围中的“保存 CBA 配置”选项的屏幕截图。

  12. 若要编辑或删除 CA 范围策略,请选择“...”规则行上。 若要编辑规则,请选择“ 编辑”。 若要删除规则,请选择“ 删除”。

    显示如何在 CA 范围中编辑或删除的屏幕截图。

已知的限制

  • 每个 CA 只能分配一个组。
  • 最多支持 30 个范围规则。
  • 在中间 CA 级别强制实施范围。
  • 如果不存在有效的范围规则,则配置不当可能会导致用户锁定。

登录日志条目

  • 登录日志显示成功。 在“ 其他详细信息 ”选项卡上,将显示范围策略规则中 CA 的 SKI。

    显示 CA 范围规则登录日志成功的屏幕截图。

  • 当 CBA 由于 CA 范围规则而失败时,登录日志中的 “基本信息 ”选项卡会显示错误代码 500189

    显示 CA 范围登录日志错误的屏幕截图。

    最终用户会看到以下错误消息:

    显示 CA 范围用户错误的屏幕截图。

CBA 使用条件访问身份验证强度策略的方式

可以使用内置的 Microsoft Entra Phishing 抗 MFA 身份验证强度来创建条件访问身份验证策略,该策略指定使用 CBA 访问资源。 该策略仅允许具有网络钓鱼的身份验证方法,例如 CBA、FIDO2 安全密钥和 Windows Hello 企业版。

还可以创建自定义身份验证强度,以仅允许 CBA 访问敏感资源。 可以允许 CBA 作为单因素身份验证、MFA 或两者兼有。 有关详细信息,请参阅 条件访问身份验证强度

CBA 强度与高级选项

在 CBA 方法策略中,身份验证策略管理员可以通过使用 CBA 方法上的 身份验证绑定策略 来确定证书的强度。 现在,当用户执行 CBA 访问某些敏感资源时,可以根据颁发者和策略 OID 使用特定的证书。 创建自定义身份验证强度时,请转到 “高级”选项。 此功能提供更精确的配置,用于确定可以访问资源的证书和用户。 有关详细信息,请参阅 条件访问身份验证强度的高级选项

登录日志

登录日志提供有关登录的信息以及组织中的资源使用方式。 有关详细信息,请参阅 Microsoft Entra ID 中的登录日志

接下来,请考虑两种方案。 在一种方案中,证书满足单因素身份验证。 第二种情况是证书满足 MFA。

对于测试方案,请选择具有要求 MFA 的条件访问策略的用户。

通过将使用者可选名称和主体名称映射到userPrincipalName用户对象来配置用户绑定策略。

应像以下屏幕截图所示的示例一样配置用户证书:

显示用户证书的屏幕截图。

排查登录日志中动态变量的登录问题

尽管登录日志通常提供调试登录问题所需的所有信息,但有时需要特定值。 登录日志不支持动态变量,因此在某些情况下,登录日志没有调试所需的信息。

例如,登录日志中的失败原因可能会显示"The Certificate Revocation List (CRL) failed signature validation. Expected Subject Key Identifier <expectedSKI> doesn't match CRL Authority Key <crlAK>. Request your tenant administrator to check the CRL configuration."在此方案中,<expectedSKI><crlAKI>并且未填充正确的值。

当用户使用 CBA 登录失败时,可以从错误页上的“ 更多详细信息 ”链接复制日志详细信息。 有关详细信息,请参阅 “了解 CBA 错误”页

测试单因素身份验证

对于第一个测试方案,请配置规则满足单因素身份验证的 IssuerAndSubject 身份验证策略。

显示所需的身份验证策略配置和单因素身份验证的屏幕截图。

  1. 使用 CBA 以测试用户身份登录到 Microsoft Entra 管理中心 。 在规则满足单因素身份验证的位置 IssuerAndSubject 设置身份验证策略。

  2. 搜索并选择 “登录日志”。

    下图显示了可在登录日志中找到的一些条目。

    第一个条目向用户请求 X.509 证书。 中断状态意味着Microsoft已验证 CBA 是否已为租户设置 Entra ID。 请求证书进行身份验证。

    显示登录日志中的单因素身份验证条目的屏幕截图。

    活动详细信息 显示,请求是用户在其中选择证书的预期登录流的一部分。

    显示登录日志中的活动详细信息的屏幕截图。

    其他详细信息 显示证书信息。

    显示登录日志中的多重附加详细信息的屏幕截图。

    其他条目显示身份验证已完成,主刷新令牌将发回浏览器,并授予用户对资源的访问权限。

    显示登录日志中的刷新令牌条目的屏幕截图。

测试 MFA

对于下一个测试方案,请配置规则满足 MFA 的 policyOID 身份验证策略。

显示身份验证策略配置的屏幕截图,其中显示了需要 MFA。

  1. 使用 CBA 登录到 Microsoft Entra 管理中心 。 由于策略设置为满足 MFA,因此用户登录成功且没有第二个因素。

  2. 搜索并选择 “登录”。

    将显示登录日志中的多个条目,包括状态 为“中断 ”的条目。

    显示登录日志中的多个条目的屏幕截图。

    活动详细信息 显示,请求是用户在其中选择证书的预期登录流的一部分。

    显示登录日志中的第二因素登录详细信息的屏幕截图。

    状态 中断 的条目在“ 其他详细信息 ”选项卡上显示更多诊断信息。

    显示登录日志中中断尝试详细信息的屏幕截图。

    下表提供了每个字段的说明。

    字段 说明
    用户证书使用者名称 指证书中的主题名字段。
    用户证书绑定 证书: PrincipalName;用户属性: userPrincipalName;排名:1
    此字段显示哪个 SAN PrincipalName 证书字段映射到 userPrincipalName 用户属性,并且优先级为 1。
    用户证书身份验证级别 multiFactorAuthentication
    用户证书身份验证级别类型 PolicyId
    此字段显示策略 OID 用于确定身份验证强度。
    用户证书身份验证级别标识符 1.2.3.4
    这显示了证书中的标识符策略 OID 的值。

CBA 错误页

CBA 可能由于多种原因而失败。 示例包括无效证书、用户选择了错误的证书或过期的证书,或者发生 CRL 问题。 证书验证失败时,用户会看到以下错误消息:

显示证书验证错误的屏幕截图。

如果 CBA 在浏览器中失败,即使失败是因为你取消了证书选取器,请关闭浏览器会话。 打开新会话以再次尝试 CBA。 由于浏览器缓存证书,因此需要新会话。 重试 CBA 时,浏览器会在 TLS 质询期间发送缓存的证书,这会导致登录失败和验证错误。

  1. 若要从登录日志获取要发送到身份验证策略管理员的日志记录信息,请选择 “更多详细信息”。

    显示错误详细信息的屏幕截图。

  2. 选择 登录的其他方法 ,并尝试其他可用的身份验证方法登录。

    显示新登录尝试的屏幕截图。

在 Microsoft Edge 中重置证书选择

Microsoft Edge 浏览器添加了一项功能,该功能 无需重启浏览器即可重置证书选择

用户完成以下步骤:

  1. CBA 失败时,将显示错误页。

    显示证书验证错误的屏幕截图。

  2. 在地址 URL 的左侧,选择锁图标,然后选择 证书选项

    显示Microsoft Edge 浏览器证书选择的屏幕截图。

  3. 选择 “重置证书”选项

    显示Microsoft Edge 浏览器证书选项重置的屏幕截图。

  4. 选择 “重置”选项

    显示Microsoft Edge 浏览器证书选择重置接受情况的屏幕截图。

  5. 选择 其他登录方式

    显示证书验证错误的屏幕截图。

  6. 选择 “使用证书或智能卡 ”,然后继续执行 CBA 身份验证。

MostRecentlyUsed 方法中的 CBA

用户使用 CBA 成功进行身份验证后,用户的 MostRecentlyUsed 身份验证方法将设置为 CBA。 用户下次输入 UPN 并选择 “下一步”时,会看到 CBA 方法,无需选择“ 使用证书或智能卡”。

若要重置 MRU 方法,请取消证书选取器,然后选择 “其他登录方式”。 选择其他可用方法,然后完成身份验证。

MRU 身份验证方法在用户级别设置。 如果用户使用其他身份验证方法成功登录其他设备,则会将 MRU 重置为用户当前已登录的方法。

外部标识支持

外部标识 B2B 来宾用户可以在主租户上使用 CBA。 如果将资源租户的跨租户设置设置为信任主租户中的 MFA,则会遵循主租户上的用户的 CBA。 有关详细信息,请参阅 配置 B2B 协作跨租户访问。 目前不支持资源租户上的 CBA。