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

Azure B2C自定义策略配置:限制未受邀外部用户登录

Azure B2C自定义用户流策略配置方案

一、限制外部AAD用户仅受邀登录

1. 拦截未受邀用户并禁用自动账户创建

  • 在TrustFrameworkExtensions.xml中,找到外部AAD身份提供者的ClaimsProvider节点,添加邮箱验证逻辑:
    <!-- 添加验证邮箱是否在受邀列表的声明转换 -->
    <ClaimsTransformation Id="ValidateInvitedEmail" TransformationMethod="AssertStringClaimsAreEqual">
      <InputClaims>
        <InputClaim ClaimTypeReferenceId="email" TransformationClaimType="inputClaim1" />
        <InputClaim ClaimTypeReferenceId="invitedEmail" TransformationClaimType="inputClaim2" />
      </InputClaims>
      <InputParameters>
        <InputParameter Id="stringComparison" DataType="string" Value="ordinalIgnoreCase" />
      </InputParameters>
    </ClaimsTransformation>
    
  • 将该验证绑定到外部AAD的TechnicalProfile(如AAD-Common)的前置流程中:
    <TechnicalProfile Id="AAD-Common">
      <InputClaimsTransformations>
        <InputClaimsTransformation ReferenceId="ValidateInvitedEmail" />
      </InputClaimsTransformations>
      <!-- 原有配置保留 -->
    </TechnicalProfile>
    
  • 禁用自动创建随机UPN账户:找到AAD用户存储的TechnicalProfile(如AAD-UserReadUsingEmailAddress),移除所有与用户创建相关的PersistedClaims,仅保留读取逻辑,确保未受邀用户无法写入租户用户库。

2. 管理受邀邮箱列表

  • 若邮箱列表静态,可在租户中创建自定义集合属性invitedEmails,将受邀邮箱存入其中,策略中直接读取该属性进行比对;若列表动态,可通过REST API技术配置文件调用外部服务实时验证邮箱权限。

3. 确保无注册入口

  • 在SignUpOrSignIn.xml的UserJourney节点中,移除所有包含注册逻辑的OrchestrationStep,仅保留登录流程;同时在页面布局配置中,隐藏外部身份提供者的注册按钮,彻底阻断注册路径。

二、让Token包含邮箱字段

  • 在TrustFrameworkExtensions.xml的RelyingParty节点中,添加email作为输出声明:
    <RelyingParty>
      <DefaultUserJourney ReferenceId="SignUpOrSignIn" />
      <TechnicalProfile Id="PolicyProfile">
        <DisplayName>PolicyProfile</DisplayName>
        <Protocol Name="OpenIdConnect" />
        <OutputClaims>
          <OutputClaim ClaimTypeReferenceId="email" />
          <OutputClaim ClaimTypeReferenceId="sub" />
          <!-- 其他需返回的声明按需添加 -->
        </OutputClaims>
        <SubjectNamingInfo ClaimType="sub" />
      </TechnicalProfile>
    </RelyingParty>
    
  • 确保外部AAD身份提供者的TechnicalProfile正确提取邮箱声明:
    <TechnicalProfile Id="AAD-OIDC">
      <OutputClaims>
        <OutputClaim ClaimTypeReferenceId="email" PartnerClaimType="email" />
        <!-- 其他身份声明 -->
      </OutputClaims>
    </TechnicalProfile>
    

三、验证要点

  • 用未受邀邮箱测试:应在身份验证阶段被拦截,无法进入租户创建账户
  • 用受邀邮箱测试:正常跳转至外部AAD完成其组织的MFA/密码验证,登录后租户中关联的账户使用受邀邮箱作为标识,无随机UPN生成
  • 解码登录返回的Token:确认email字段存在且值与受邀邮箱一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 14:19:59