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

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

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

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

  • 外部标识提供者
  • REST API 服务进行连接
  • 令牌签名和加密

本文讨论了对于 Azure AD B2C 使用的策略密钥,你需要了解的内容。

注意

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

你可以在 Azure 门户中的“策略密钥”菜单下配置用于在服务之间建立信任的机密和证书。 密钥可以是对称的,也可以是非对称的。 在对称加密或私钥加密中,将使用共享机密来加密和解密数据。 非对称加密或公钥加密这种加密系统使用密钥对,其中包含与信赖方应用程序共享的公钥,以及只有 Azure AD B2C 知道的私钥。

策略密钥集和密钥

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

Attribute 必需 备注
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. 在概述页面上的“策略”下,选择“Identity Experience Framework” 。
  5. 选择“策略密钥”
    1. 若要添加新密钥,请选择“添加”。
    2. 若要删除新密钥,请选择该密钥,然后选择“删除”。 若要删除密钥,请键入要删除的密钥容器的名称。 Azure AD B2C 将删除密钥,并创建一个后缀为 .bak 的密钥副本。

替换密钥

密钥集里的密钥不可替换或删除。 如果需要更改现有密钥,请执行以下操作:

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

后续步骤