如何在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
相关产品推荐
相关产品推荐

