You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为TOTP自定义B2C策略添加设备管理功能?

解决Azure AD B2C TOTP自定义策略多设备注册/管理问题

原TOTP示例策略默认仅支持单设备密钥存储,要实现多设备添加、删除及重新注册功能,需从以下核心部分修改策略配置:

1. 调整用户属性存储结构

原策略使用单一字符串属性存储TOTP密钥,需替换为字符串集合类型的扩展属性来保存多组设备密钥及元数据:

  • 在B2C扩展应用中创建新属性(如extension_TotpDeviceKeys),类型选择String Collection。
  • 替换策略中所有引用原单密钥属性(如extension_TotpSecretKey)的位置,改为使用该集合属性。

2. 修改TOTP注册流程

  • 注册新设备时,不再覆盖现有密钥,而是将包含设备名称、密钥、创建时间的JSON格式字符串(例:{"deviceName":"办公手机","secretKey":"xxxxxx","createdAt":"2024-05-20"})追加到集合属性中。
  • 调整用户写入技术配置文件(如AAD-UserWriteUsingAlternativeSecurityId),确保执行追加操作而非替换属性值。

3. 更新TOTP验证逻辑

  • 验证环节需遍历用户存储的所有TOTP密钥,逐一校验输入的验证码,任意一组验证通过即判定成功。
  • 可通过声明转换(如GetSingleItemFromJsonArray)或自定义REST API实现多密钥遍历验证,也可在策略中通过循环断言逻辑处理。

4. 新增设备管理流程

  • 添加专属用户旅程,支持用户查看已注册设备列表、删除指定设备:
    • 展示设备列表:通过声明转换解析集合属性中的JSON数据,在页面上渲染设备信息。
    • 删除设备:使用RemoveItemFromStringCollection声明转换,从集合属性中移除对应设备的密钥数据。

关键配置示例

追加密钥到集合的声明转换

<ClaimsTransformation Id="AddTotpKeyToCollection" TransformationMethod="AddItemToStringCollection">
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="extension_TotpDeviceKeys" TransformationClaimType="collection" />
    <InputClaim ClaimTypeReferenceId="newTotpDeviceJson" TransformationClaimType="item" />
  </InputClaims>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="extension_TotpDeviceKeys" TransformationClaimType="collection" />
  </OutputClaims>
</ClaimsTransformation>

修改用户写入技术配置文件

<TechnicalProfile Id="AAD-UserWriteUsingAlternativeSecurityId">
  <Metadata>
    <Item Key="Operation">Write</Item>
    <Item Key="RaiseErrorIfClaimsPrincipalAlreadyExists">true</Item>
  </Metadata>
  <InputClaimsTransformations>
    <InputClaimsTransformation ReferenceId="AddTotpKeyToCollection" />
  </InputClaimsTransformations>
  <PersistedClaims>
    <PersistedClaim ClaimTypeReferenceId="extension_TotpDeviceKeys" />
    <!-- 其他需要持久化的声明 -->
  </PersistedClaims>
</TechnicalProfile>

内容的提问来源于stack exchange,提问作者bperniciaro

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 07:22:10