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

如何让Azure AD B2C在新用户注册后通知后端并传递Object ID?

实现Azure AD B2C注册完成后调用后端API的方案

用户流方案(当前使用)

用户流本身没有内置的注册后触发API的选项,但可以通过Azure Event Grid事件通知实现需求:

  • 登录Azure门户,进入你的B2C租户,找到「事件」菜单,启用Event Grid集成,勾选「用户创建」事件类型。
  • 创建Event Grid订阅:选择终点类型为「Webhook」,填入你的后端Webhook地址;如果需要中转处理,也可以选择Azure Function作为终点,再由Function转发请求到你的API。
  • 事件触发后,Event Grid会向你的终点发送包含用户信息的JSON payload,其中objectId字段即为用户的Object ID,直接提取该字段传递给后端即可。

自定义策略方案(后续迁移)

自定义策略支持在用户注册流程的用户创建完成后添加REST API调用步骤,完全满足你的需求:

  1. 定义REST API技术配置
    在TrustFrameworkExtensions.xml中添加REST API的技术配置,示例如下:
    <ClaimsProviders>
      <ClaimsProvider>
        <DisplayName>REST API</DisplayName>
        <TechnicalProfiles>
          <TechnicalProfile Id="REST-NotifyRegistration">
            <DisplayName>Notify Registration Complete</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-backend-api.com/registration-notify</Item>
              <Item Key="SendClaimsIn">Body</Item>
              <!-- 可选:配置认证方式,比如基本认证 -->
              <Item Key="AuthenticationType">Basic</Item>
              <Item Key="UserName">your-api-username</Item>
              <Item Key="Password">your-api-password</Item>
            </Metadata>
            <InputClaims>
              <!-- 传递Object ID到API -->
              <InputClaim ClaimTypeReferenceId="objectId" />
              <!-- 可选:传递其他用户信息,比如邮箱 -->
              <InputClaim ClaimTypeReferenceId="email" />
            </InputClaims>
            <UseTechnicalProfileForSessionManagement ReferenceId="SM-Noop" />
          </TechnicalProfile>
        </TechnicalProfiles>
      </ClaimsProvider>
    </ClaimsProviders>
    
  2. 在用户旅程中添加API调用步骤
    找到注册用户的User Journey(通常在TrustFrameworkBase.xml或TrustFrameworkExtensions.xml中),在「创建用户」的步骤之后、「发送令牌」的步骤之前,添加一个编排步骤:
    <UserJourney Id="SignUp">
      <OrchestrationSteps>
        <!-- 前面的步骤:收集用户信息、验证等 -->
        <OrchestrationStep Order="5" Type="ClaimsExchange">
          <ClaimsExchanges>
            <ClaimsExchange Id="CreateUser" TechnicalProfileReferenceId="LocalAccountSignUpWithLogonEmail" />
          </ClaimsExchanges>
        </OrchestrationStep>
        <!-- 添加这一步:调用注册通知API -->
        <OrchestrationStep Order="6" Type="ClaimsExchange">
          <ClaimsExchanges>
            <ClaimsExchange Id="NotifyRegistration" TechnicalProfileReferenceId="REST-NotifyRegistration" />
          </ClaimsExchanges>
        </OrchestrationStep>
        <!-- 后面的步骤:发送令牌等 -->
        <OrchestrationStep Order="7" Type="SendClaims" CpimIssuerTechnicalProfileReferenceId="JwtIssuer" />
      </OrchestrationSteps>
    </UserJourney>
    
  3. 错误处理配置
    可选:如果需要处理API调用失败的情况,可以在技术配置中添加错误处理规则,比如重试或返回错误信息给用户:
    <Metadata>
      <!-- 添加重试配置 -->
      <Item Key="RetryIntervalSeconds">5</Item>
      <Item Key="NumberOfRetries">2</Item>
    </Metadata>
    <OutputClaims>
      <!-- 如果API返回错误信息,可以映射到声明并显示给用户 -->
      <OutputClaim ClaimTypeReferenceId="apiError" />
    </OutputClaims>
    

注意事项

  • Event Grid方案是异步触发,适合不需要同步等待API响应的场景;自定义策略方案是同步触发,可在流程中处理API响应。
  • 确保后端API能处理来自Azure B2C或Event Grid的请求,包括IP白名单、认证校验等。
  • 自定义策略中,objectId在用户创建完成后会自动加入声明包,可直接作为输入声明传递给API。

内容的提问来源于stack exchange,提问作者me.at.coding

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 09:20:22