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

Azure B2C客户专属密码策略定制方案及Graph API实现咨询

最优实现方案建议

方案选择:单租户 vs 多租户

1. 单租户方案(基于安全组隔离)

适合客户数量较多、预算有限,且能接受一定自定义开发工作量的场景:

  • 密码复杂度+令牌生命周期:利用现有自定义策略,为每个客户创建独立的策略文件,通过安全组做受众过滤。管理员门户中,客户管理员登录后,调用Graph API的PUT /trustFramework/policies/{policyId}端点,更新对应策略里的密码复杂度规则(如PasswordComplexity元素的配置)和令牌生命周期参数(如JwtIssuer技术配置中的tokenExpiry)。
  • 锁定前尝试次数+锁定时长:由于B2C原生锁定是租户级,需自定义账户锁定逻辑替代:
    • 在自定义策略中添加Claims Transformation,记录用户登录失败次数并存储到Azure AD B2C的目录扩展属性;
    • 配置策略规则,当失败次数达到阈值时拒绝登录,锁定时长通过属性或外部配置控制;
    • 管理员门户可通过Graph API更新对应客户的阈值与时长参数(比如修改策略中的硬编码值,或从Azure App Configuration等外部源读取配置)。
  • 管理员门户开发要点:门户用B2C做身份验证,登录后识别用户所属客户安全组,仅展示该客户的配置选项;操作时严格限定只更新对应客户的策略或配置。

2. 多租户方案(每个客户独立B2C租户)

适合客户数量较少、对数据隔离要求极高,且愿意承担多租户管理成本的场景:

  • 全策略支持:所有目标策略(密码复杂度、令牌生命周期、锁定次数、锁定时长)均可通过原生Graph API实现:
    • 密码复杂度+令牌生命周期:调用PATCH /identity/userFlows/{userFlowId}(内置用户流)或PUT /trustFramework/policies/{policyId}(自定义策略)修改对应租户的配置;
    • 锁定前尝试次数+锁定时长:调用PATCH /organization/{tenantId},修改accountLockoutPolicy中的maxFailedAttemptsBeforeLockout和accountLockoutDurationInMinutes参数。
  • 管理员门户开发要点:门户作为多租户应用,支持跨B2C租户的身份验证;客户管理员登录自身租户后,门户获取目标租户ID,调用对应租户的Graph API完成配置修改。

Graph API关键端点说明

  • 自定义策略更新:PUT /trustFramework/policies/{policyId},需权限TrustFrameworkPolicy.ReadWrite.All
  • 内置用户流更新:PATCH /identity/userFlows/{userFlowId},需权限UserFlow.ReadWrite.All
  • 租户级锁定策略更新:PATCH /organization/{tenantId},需权限Organization.ReadWrite.All
  • 目录扩展属性更新(自定义锁定用):PATCH /users/{userId},需权限User.ReadWrite.All

注意事项

  • 单租户方案下,务必通过安全组和策略受众过滤确保客户间配置隔离,避免策略修改影响其他客户;
  • 所有策略修改需做好版本管理,方便回滚;
  • 管理员门户需申请足够的Graph API权限,并遵循最小权限原则;
  • 多租户方案需考虑租户批量创建、统一管理的自动化流程,降低运维成本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 16:01:34