你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

Azure Active Directory B2C 中的策略密钥概述

重要

自 2025 年 5 月 1 日起,Azure AD B2C 将不再可供新客户购买。 在我们的常见问题解答中了解详细信息

在开始之前,请使用此页面顶部的 “选择策略类型 选择器”来选择要设置的策略类型。 Azure Active Directory B2C 提供了两种定义用户如何与应用程序交互的方法:通过预定义的用户流,或者通过可完全配置的自定义策略。 对于每种方法,本文中所需的步骤都不同。

此功能仅适用于自定义策略。 对于设置步骤,请在前面的选择器中选择“自定义策略”

Azure Active Directory B2C(Azure AD B2C)以策略密钥的形式存储机密和证书,以与它集成的服务建立信任。 这些信任包括:

  • 外部身份提供者
  • 使用 REST API 服务进行连接
  • 令牌签名和加密

本文讨论了您需要了解的有关 Azure AD B2C 使用的策略密钥的内容。

注释

目前,策略密钥的配置仅限于 自定义策略

可以在 Azure 门户中的 “策略密钥 ”菜单下配置机密和证书,以便在服务之间建立信任。 密钥可以是对称密钥或非对称密钥。 对称加密或称共享密钥加密,是指使用共享密钥来同时进行数据的加密和解密。 非对称 加密或公钥加密是一种加密系统,它使用密钥对,由与信赖方应用程序和仅 Azure AD B2C 已知的私钥共享的公钥组成。

策略密钥集和密钥

Azure AD B2C 中策略密钥的顶级资源是 Keyset 容器。 每个密钥集至少包含一个 密钥。 键具有以下属性:

特征 必选 注解
use 是的 用法:标识公钥的预期用途。 加密数据 enc,或验证数据 sig上的签名。
nbf 激活日期和时间。 管理员可以手动设置替代值。
exp 到期日期和时间。 管理员可以手动设置替代值。

建议根据 PKI 标准设置密钥激活和过期值。 出于安全或策略原因,可能需要定期轮换这些证书。 例如,你可能有一个策略来每年轮换所有证书。

若要创建密钥,可以选择以下方法之一:

  • 手动 - 使用定义的字符串创建机密。 机密是对称密钥。 可以设置激活和到期日期。
  • 生成 - 自动生成密钥。 可以设置激活和到期日期。 有两个选项:
    • 机密 - 生成对称密钥。
    • RSA - 生成密钥对(非对称密钥)。
  • 上传 - 上传证书或 PKCS12 密钥。 证书必须包含私钥和公钥(非对称密钥)。

密钥滚动更新

出于安全考虑,Azure AD B2C 可以定期轮换密钥,或者在紧急情况下立即轮换。 任何与 Azure AD B2C 集成的应用程序、标识提供者或 REST API 都应准备好处理密钥滚动更新事件,无论其发生频率如何。 否则,如果应用程序或 Azure AD B2C 尝试使用过期密钥执行加密作,则登录请求将失败。

如果 Azure AD B2C 密钥集具有多个密钥,则任何一次只有一个密钥处于活动状态,具体取决于以下条件:

  • 密钥激活基于 激活日期

    • 密钥按激活日期按升序排序。 激活日期更远的密钥在列表中显示靠后。 没有激活日期的密钥位于列表底部。
    • 当当前日期和时间超过密钥的激活日期时,Azure AD B2C 将激活该密钥,并停止使用之前的活动密钥。
  • 当当前密钥的过期时间已过并且密钥容器包含有效 nbf(未之前)exp(过期) 时间的新密钥时,新密钥将自动变为活动状态。 新的令牌会使用新激活的密钥来进行签名。 在管理员禁用之前,可以保留为令牌验证发布的过期密钥,但必须 通过提交支持请求来请求此密钥。

  • 如果当前密钥的到期时间已过,并且密钥容器未包含具有有效的“不早于”和“到期”时间的新密钥,则 Azure AD B2C 将无法使用到期的密钥。 Azure AD B2C 在自定义策略的依赖组件内引发错误消息。 为了避免此问题,可以创建一个没有激活和过期日期的默认密钥,作为保障措施。

  • JwtIssuer 技术配置文件中引用密钥时,OpenId Connect 众所周知的配置终结点的密钥终结点 (JWKS URI) 会反映密钥容器中配置的密钥。 使用 OIDC 库的应用程序会自动提取此元数据,以确保它使用正确的密钥来验证令牌。 有关详细信息,请了解如何使用 Microsoft身份验证库,该库始终自动提取最新的令牌签名密钥。

关于 Azure AD B2C 中密钥轮转过程的示意图。

密钥缓存

上传密钥后,密钥上的激活标志默认设置为 false。 然后,可以将此密钥的状态设置为 “已启用”。 如果启用了密钥且有效(当前时间介于 NBF 和 EXP 之间),则使用密钥。

密钥状态

激活标志属性可在 Azure 门户 UX 中修改,允许管理员禁用密钥并将其从轮换中取出。

策略密钥管理

若要获取密钥容器中的当前活动密钥,请使用 Microsoft Graph API getActiveKey 终结点。

若要添加或删除签名和加密密钥,请执行以下作:

  1. 登录到 Azure 门户
  2. 如果有权访问多个租户,请选择顶部菜单中的“设置”图标,从“目录 + 订阅”菜单切换到你的 Azure AD B2C 租户。
  3. 在 Azure 门户中,搜索并选择 Azure AD B2C
  4. 在概述页上,在 策略下,选择 标识体验框架
  5. 选择 策略密钥
    1. 若要添加新密钥,请选择“ 添加”。
    2. 若要删除新密钥,请选择该密钥,然后选择“ 删除”。 若要删除密钥,请键入要删除的密钥容器的名称。 Azure AD B2C 删除密钥,并使用后缀.bak创建密钥的副本。

替换密钥

键集中的键不可替换或可移动。 如果需要更改现有密钥:

  • 建议添加新密钥,并将 激活日期 设置为当前日期和时间。 Azure AD B2C 激活新密钥并停止使用以前的活动密钥。
  • 或者,可以使用正确的键创建新的密钥集。 更新策略以使用新的密钥集,然后删除旧的密钥集。