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

如何在Azure AD B2C的SAML SSO中添加Relay State参数

Azure AD B2C Relay State 参数实现登录后返回指定页面

功能可行性确认

SAML中的Relay State参数完全可以满足你的需求。它的核心作用就是在身份认证流程中传递自定义状态信息,登录完成后作为IDP的Azure AD B2C会将这个参数带回作为SP的AEM,AEM就能据此跳转回用户之前的收藏页面或目标页面,无需默认跳转到首页。

自定义策略中的实现步骤

1. SP(AEM)端发起请求时附加Relay State

当用户触发登录操作时,AEM需要把用户要访问的目标页面URL(比如收藏页)做URL编码后,作为RelayState参数附加到SAML认证请求的URL末尾。

  • 示例:若目标页面是https://your-aem-site.com/favorites/page1,编码后参数值为https%3A%2F%2Fyour-aem-site.com%2Ffavorites%2Fpage1,最终请求URL会包含&RelayState=https%3A%2F%2Fyour-aem-site.com%2Ffavorites%2Fpage1。

2. B2C自定义策略中接收并存储Relay State

  • 添加自定义声明:在策略的<ClaimsSchema>节点中新增用于存储Relay State的声明:
<ClaimType Id="relayState">
  <DisplayName>Relay State</DisplayName>
  <DataType>string</DataType>
  <UserHelpText>存储登录前的目标页面URL</UserHelpText>
</ClaimType>
  • 读取请求中的Relay State:在处理SAML认证请求的<TechnicalProfile>里,添加输入声明获取Relay State参数:
<InputClaim ClaimTypeReferenceId="relayState" PartnerClaimType="RelayState" />
  • 保留声明至流程结束:在<RelyingParty>节点的<OutputClaims>中包含该声明,确保它在整个认证流程中被传递:
<OutputClaim ClaimTypeReferenceId="relayState" />

3. B2C完成认证后返回Relay State给AEM

在B2C发送SAML响应的技术配置文件中,将存储的Relay State参数输出到响应里:

<OutputClaim ClaimTypeReferenceId="relayState" PartnerClaimType="RelayState" />

这样B2C完成身份验证后,会把Relay State值带回AEM。

4. AEM端处理返回的Relay State

AEM接收到B2C的SAML响应后,提取其中的Relay State参数,解码后直接跳转到对应的URL即可,无需再跳转至首页。

注意事项

  • 安全性校验:AEM需对返回的Relay State URL做合法性验证,比如检查域名是否属于自身站点,防止钓鱼攻击。
  • 编码规范:确保URL编码和解码过程正确,否则会导致跳转目标地址无效。
  • 声明传递:自定义策略中要保证relayState声明在各个环节都被正确引用,避免流程中丢失该参数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 23:50:08