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

如何在Azure B2C策略中获取SPA传入的重定向URL用于日志记录?

如何在Azure B2C自定义策略中获取重定向URL(redirect_uri)

可以直接在Azure B2C自定义策略中获取请求传入的redirect_uri参数值,具体实现步骤如下:

1. 声明存储重定向URL的自定义声明

在策略的<ClaimsSchema>节点中添加一个自定义声明,用于保存提取到的重定向URL:

<ClaimsSchema>
  <ClaimType Id="redirectUri">
    <DisplayName>Redirect URI</DisplayName>
    <DataType>string</DataType>
  </ClaimType>
</ClaimsSchema>

2. 配置技术配置文件提取参数

创建或复用一个技术配置文件,通过Azure B2C内置表达式从请求上下文提取redirect_uri,并映射到自定义声明:

<TechnicalProfile Id="ExtractRedirectUri">
  <DisplayName>Extract Redirect URI from request</DisplayName>
  <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.SelfAssertedAttributeProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="redirectUri" PartnerClaimType="redirect_uri" DefaultValue="{OAUTH-KV:redirect_uri}" />
  </InputClaims>
  <UseTechnicalProfileForSessionManagement ReferenceId="SM-Noop" />
</TechnicalProfile>

其中{OAUTH-KV:redirect_uri}是B2C内置的表达式,专门用于提取OAuth2请求中的查询参数值。

3. 在用户旅程中加入提取步骤

将上述技术配置文件添加到用户旅程的合适环节(比如调用外部服务前),确保重定向URL被提前提取并存储:

<UserJourney Id="SignUpOrSignIn">
  <OrchestrationSteps>
    <!-- 其他流程步骤... -->
    <OrchestrationStep Order="X" Type="ClaimsExchange">
      <ClaimsExchanges>
        <ClaimsExchange Id="ExtractRedirectUriExchange" TechnicalProfileReferenceId="ExtractRedirectUri" />
      </ClaimsExchanges>
    </OrchestrationStep>
    <!-- 后续调用外部服务的步骤,可直接引用该声明 -->
    <!-- 其他流程步骤... -->
  </OrchestrationSteps>
</UserJourney>

4. 在外部服务调用中使用该声明

配置调用外部服务的技术配置文件时,通过{claim:redirectUri}引用已存储的重定向URL,传递给外部服务:

<TechnicalProfile Id="ExternalServiceLogger">
  <DisplayName>Call External Logging Service</DisplayName>
  <Protocol Name="REST" Method="POST" />
  <Metadata>
    <Item Key="ServiceUrl">https://your-external-service.com/log</Item>
    <Item Key="SendClaimsIn">Body</Item>
  </Metadata>
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="redirectUri" PartnerClaimType="redirect_url" />
    <!-- 其他需要传递的参数声明... -->
  </InputClaims>
  <UseTechnicalProfileForSessionManagement ReferenceId="SM-Noop" />
</TechnicalProfile>

注意:传入的redirect_uri必须是在Azure B2C应用注册中已配置的合法重定向URL,否则B2C会直接拒绝请求,无法进入策略流程。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 15:57:09