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

Azure AD B2C集成RESTful API:如何基于输出声明重定向至不同URL

根据Web API返回的声明实现Azure AD B2C条件重定向

我来给你拆解一下具体的实现步骤,核心就是让Azure AD B2C获取到你的Web API返回的标志声明后,根据这个值触发不同的重定向逻辑:

1. 让Web API返回对应的重定向标志声明

首先确保你的ASP.NET Web API在验证业务逻辑后,返回包含重定向标识的声明(可以是布尔标志或者直接是目标URL),响应格式要符合Azure AD B2C的要求,比如:

{
  "version": "1.0.0",
  "status": "200",
  "claims": {
    // 方案一:用布尔标志区分不同场景
    "needsRedirectToProfile": "true",
    // 方案二:直接返回目标URL
    "redirectTargetUrl": "https://your-custom-profile-page.com"
  }
}

2. 在B2C自定义策略中注册这个声明

打开你的自定义策略XML文件,先在<ClaimsSchema>节点下定义这个新声明,让B2C能识别它:

<!-- 注册布尔标志声明 -->
<ClaimType Id="needsRedirectToProfile">
  <DisplayName>Need Redirect to Profile Page</DisplayName>
  <DataType>boolean</DataType>
</ClaimType>

<!-- 或者注册URL类型声明 -->
<ClaimType Id="redirectTargetUrl">
  <DisplayName>Redirect Target URL</DisplayName>
  <DataType>string</DataType>
</ClaimType>

然后在<RelyingParty>节点的<OutputClaims>里添加这个声明,确保它能在用户旅程中被传递:

<OutputClaim ClaimTypeReferenceId="needsRedirectToProfile" />
<!-- 或者 -->
<OutputClaim ClaimTypeReferenceId="redirectTargetUrl" />

3. 添加条件重定向的逻辑到用户旅程

接下来要在用户旅程中,调用完你的Web API之后,添加一个条件步骤来触发重定向。这里分两种方案:

方案一:根据布尔标志重定向

先定义一个用于重定向的技术配置文件:

<TechnicalProfile Id="RedirectToProfilePage">
  <DisplayName>Redirect to User Profile Page</DisplayName>
  <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.RedirectToUrlProtocolProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
  <Metadata>
    <Item Key="Url">https://your-custom-profile-page.com</Item>
  </Metadata>
</TechnicalProfile>

然后在用户旅程的<OrchestrationSteps>中,在调用Web API的步骤之后,添加一个条件步骤:

<!-- 假设调用Web API的步骤是Order="5",这里就设为Order="6" -->
<OrchestrationStep Order="6" Type="ClaimsExchange">
  <Preconditions>
    <!-- 如果不需要重定向,就跳过这个步骤 -->
    <Precondition Type="ClaimEquals" ExecuteActionsIf="false">
      <Value>needsRedirectToProfile</Value>
      <Value>true</Value>
      <Action>SkipThisOrchestrationStep</Action>
    </Precondition>
  </Preconditions>
  <ClaimsExchanges>
    <ClaimsExchange Id="RedirectToProfile" TechnicalProfileReferenceId="RedirectToProfilePage" />
  </ClaimsExchanges>
</OrchestrationStep>

方案二:直接使用返回的URL重定向

这种方式更灵活,适合多个重定向目标的场景。先定义技术配置文件:

<TechnicalProfile Id="RedirectToDynamicUrl">
  <DisplayName>Redirect to Dynamic Target URL</DisplayName>
  <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.RedirectToUrlProtocolProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
  <Metadata>
    <!-- 直接使用返回的声明作为URL -->
    <Item Key="Url">{redirectTargetUrl}</Item>
    <Item Key="UseClaimAsUrl">true</Item>
  </Metadata>
</TechnicalProfile>

然后在用户旅程中添加步骤:

<OrchestrationStep Order="6" Type="ClaimsExchange">
  <Preconditions>
    <!-- 如果没有返回URL,就跳过 -->
    <Precondition Type="ClaimExists" ExecuteActionsIf="false">
      <Value>redirectTargetUrl</Value>
      <Action>SkipThisOrchestrationStep</Action>
    </Precondition>
  </Preconditions>
  <ClaimsExchanges>
    <ClaimsExchange Id="RedirectToDynamic" TechnicalProfileReferenceId="RedirectToDynamicUrl" />
  </ClaimsExchanges>
</OrchestrationStep>

4. 关键注意事项

  • 所有重定向的目标URL必须添加到Azure AD B2C租户中对应应用注册的允许的重定向URI列表里,否则B2C会拒绝重定向。
  • 确保你的Web API返回的声明名称和策略中定义的ClaimType Id完全一致,大小写敏感。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:39:30