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

Azure AD B2C自定义策略:如何提供独立注册链接?

Azure AD B2C自定义策略实现方案(满足单一RP、合并UI、独立注册链接等需求)

一、单一依赖方(RP)策略配置

  • 仅维护一个RP策略文件,所有用户流程(登录、注册、密码重置)都通过该RP触发,避免多RP冗余。在RP文件中统一引用TrustFrameworkBase和Extensions文件,将业务逻辑集中在Extensions层管理,RP层仅负责对外暴露授权端点。

二、基于CombinedSignInAndSignUp实现合并UI

  • 在主用户旅程中,将起始步骤配置为CombinedSignInAndSignUp,同时启用登录表单和注册入口:
<UserJourney Id="SignUpOrSignIn">
  <OrchestrationSteps>
    <OrchestrationStep Order="1" Type="CombinedSignInAndSignUp" ContentDefinitionReferenceId="api.signuporsignin">
      <ClaimsProviderSelections>
        <ClaimsProviderSelection TargetClaimsExchangeId="LocalAccountSigninEmailExchange" />
      </ClaimsProviderSelections>
      <ClaimsExchanges>
        <ClaimsExchange Id="LocalAccountSigninEmailExchange" TechnicalProfileReferenceId="SelfAsserted-LocalAccountSignin-Email" />
      </ClaimsExchanges>
    </OrchestrationStep>
    <!-- 后续步骤:注册信息收集、MFA验证、令牌颁发等 -->
    <OrchestrationStep Order="2" Type="ClaimsExchange">
      <Preconditions>
        <Precondition Type="ClaimsExist" ExecuteActionsIf="false">
          <Value>objectId</Value>
          <Action>SkipThisOrchestrationStep</Action>
        </Precondition>
      </Preconditions>
      <ClaimsExchanges>
        <ClaimsExchange Id="AADUserReadWithObjectId" TechnicalProfileReferenceId="AAD-UserReadUsingObjectId" />
      </ClaimsExchanges>
    </OrchestrationStep>
  </OrchestrationSteps>
</UserJourney>
  • 对应ContentDefinition配置合并UI模板,确保页面同时展示登录表单和"创建账户"按钮,可通过自定义HTML调整布局样式。

三、子旅程实现忘记密码功能

  • 定义密码重置子旅程,将其嵌入主用户流程:
<SubJourneys>
  <SubJourney Id="PasswordReset" Type="Call">
    <OrchestrationSteps>
      <OrchestrationStep Order="1" Type="ClaimsExchange">
        <ClaimsExchanges>
          <ClaimsExchange Id="PasswordResetDiscoveryExchange" TechnicalProfileReferenceId="LocalAccountDiscoveryUsingEmailAddress" />
        </ClaimsExchanges>
      </OrchestrationStep>
      <OrchestrationStep Order="2" Type="ClaimsExchange">
        <ClaimsExchanges>
          <ClaimsExchange Id="PasswordResetWriteExchange" TechnicalProfileReferenceId="LocalAccountWritePasswordUsingObjectId" />
        </ClaimsExchanges>
      </OrchestrationStep>
    </OrchestrationSteps>
  </SubJourney>
</SubJourneys>
  • 在CombinedSignInAndSignUp的技术配置中,添加忘记密码触发逻辑:在自定义UI的登录区域加入"忘记密码"链接,点击后触发子旅程跳转;或通过策略内的UserJourneyBehaviors配置自动识别密码重置请求。

四、实现独立注册链接

  • 无需新增额外RP策略,直接通过在应用端构造授权URL时添加prompt=create参数,强制进入注册流程:
https://your-tenant.b2clogin.com/your-tenant.onmicrosoft.com/B2C_1A_signup_signin/oauth2/v2.0/authorize?
client_id=your-client-id
&response_type=code
&redirect_uri=https://your-app-redirect-uri
&scope=openid offline_access https://your-tenant.onmicrosoft.com/api/read
&prompt=create
  • 该方式复用现有RP策略,无需修改用户旅程结构,确保注册流程与主流程的一致性。

五、关键注意事项

  • 确保Base、Extensions、RP策略文件的版本一致,避免兼容性问题;
  • 自定义UI时,保持合并页面的交互逻辑清晰,确保"忘记密码""注册"入口易于识别;
  • 全流程测试:验证正常登录、新用户注册、密码重置的跳转及数据处理是否符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.01 23:34:50