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 身份验证库,它会自动提取最新的令牌签名密钥。
密钥缓存
当上传密钥时,密钥上的激活标志默认设置为 false。 然后,可以将此密钥的状态设置为“已启用”。 如果密钥已启用且有效(当前时间介于 NBF 和 EXP 之间),则将使用该密钥。
密钥状态
激活标志属性可在 Azure 门户 UX 中修改,从而允许管理员禁用密钥并将其退出轮换。
策略密钥管理
若要获取密钥容器中的当前有效密钥,请使用 Microsoft Graph API getActiveKey 终结点。
若要添加或删除签名和加密密钥,请执行以下操作:
- 登录到 Azure 门户。
- 如果有权访问多个租户,请选择顶部菜单中的“设置”图标,从“目录 + 订阅”菜单中切换到你的 Azure AD B2C 租户。
- 在 Azure 门户中,搜索并选择“Azure AD B2C”。
- 在概述页面上的“策略”下,选择“Identity Experience Framework” 。
- 选择“策略密钥”
- 若要添加新密钥,请选择“添加”。
- 若要删除新密钥,请选择该密钥,然后选择“删除”。 若要删除密钥,请键入要删除的密钥容器的名称。 Azure AD B2C 将删除密钥,并创建一个后缀为 .bak 的密钥副本。
替换密钥
密钥集里的密钥不可替换或删除。 如果需要更改现有密钥,请执行以下操作:
- 建议添加新密钥,并将新密钥的“激活日期”设置为当前日期和时间。 Azure AD B2C 即将激活新密钥,并停止使用之前使用的密钥。
- 或者,可以使用正确的密钥创建一个新的密钥集。 更新策略以使用新密钥集,然后删除旧的密钥集。