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

基于Azure AD B2C按域名注册账号,实现组织内新用户注册审批

实现Azure AD B2C同组织域名用户注册的审批管控

要实现你描述的同域名新用户注册需已有用户审批的需求,Azure AD B2C的内置用户流无法直接满足,必须通过自定义策略结合外部服务来完成。以下是具体的实现方案:

核心思路

在用户注册流程中,提取注册邮箱的域名,检查租户内是否已有该域名的已激活用户:

  • 若没有该域名用户:允许正常完成注册
  • 若已有该域名用户:阻止即时注册,将用户标记为待审批状态,通知该域名的已有用户完成审批,审批通过后再激活新用户账号

具体实现步骤

1. 扩展B2C用户属性

首先需要在Azure AD B2C租户中扩展用户属性,用于记录审批相关状态:

  • emailDomain:存储用户邮箱的域名(自动提取)
  • approvalStatus:标记用户状态,可选值为Pending/Approved/Rejected
  • approverEmail:记录负责审批的该域名已有用户邮箱

2. 自定义策略中的域名检查逻辑

在自定义策略的用户旅程中添加以下关键步骤:

提取邮箱域名

使用Claims Transformation提取注册邮箱的域名,添加到用户声明中:

<ClaimsTransformation Id="ExtractEmailDomain" TransformationMethod="ExtractEmailDomain">
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="email" TransformationClaimType="inputEmail" />
  </InputClaims>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="emailDomain" TransformationClaimType="outputDomain" />
  </OutputClaims>
</ClaimsTransformation>

查询该域名的已有用户

通过REST API调用(或直接调用Microsoft Graph API)查询B2C租户内是否存在该域名的已激活用户。示例REST API调用配置:

<TechnicalProfile Id="CheckExistingDomainUsers">
  <DisplayName>Check if domain has existing users</DisplayName>
  <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.RestfulProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
  <Metadata>
    <Item Key="ServiceUrl">https://your-api-endpoint.com/check-domain-users</Item>
    <Item Key="SendClaimsIn">Body</Item>
  </Metadata>
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="emailDomain" PartnerClaimType="domain" />
  </InputClaims>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="hasExistingUsers" PartnerClaimType="exists" />
    <OutputClaim ClaimTypeReferenceId="approverEmail" PartnerClaimType="approver" />
  </OutputClaims>
  <UseTechnicalProfileForSessionManagement ReferenceId="SM-Noop" />
</TechnicalProfile>

你的API需要返回该域名是否有已激活用户,以及对应的审批人邮箱(比如取该域名第一个注册的用户)。

分支处理注册流程

在用户旅程中添加条件分支:

  • 若hasExistingUsers为false:继续执行正常注册流程,创建已激活用户
  • 若hasExistingUsers为true:创建状态为Pending的用户(accountEnabled设为false),然后触发审批通知

3. 审批流程实现

发送审批通知

使用Azure Logic Apps或Power Automate创建自动化流程:当B2C创建待审批用户时,发送邮件给approverEmail,包含审批链接(指向你构建的审批门户)。

审批门户开发

构建一个简单的Web门户,允许审批人登录(通过Azure AD B2C认证),查看待审批的注册请求,选择批准或拒绝:

  • 批准:调用Graph API更新用户的approvalStatus为Approved,并将accountEnabled设为true,同时通知新用户注册成功
  • 拒绝:更新approvalStatus为Rejected,通知新用户注册被拒绝

关键注意事项

  • 自定义策略需要熟悉Azure AD B2C的Identity Experience Framework(IEF),建议先掌握基础自定义策略配置
  • 调用Graph API时,需要为B2C租户配置对应的应用权限(User.ReadWrite.All)
  • 待审批用户的账号需设置为禁用状态,避免未审批即可登录
  • 审批流程需要处理超时、重复审批等边缘场景

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 19:01:04