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

如何将RelayState请求参数用作ADFS声明规则参数并回传给服务提供商

ADFS SAML RelayState 回传与获取方案

原生默认回传逻辑

ADFS 原生遵循 SAML 2.0 标准规范,处理 SP 发起的身份验证请求时,默认会原封不动将请求携带的RelayState参数随 SAML 响应返回给服务提供商,无需额外修改声明规则,也不需要调整请求侧逻辑:

  • 若 SAML 响应使用 POST 绑定,RelayState会和SAMLResponse一起作为表单参数提交到 SP 的断言消费服务(ACS)地址
  • 若 SAML 响应使用重定向绑定,RelayState会作为 URL 查询参数附加在 ACS 跳转地址后

声明规则中提取RelayState的方法

如果你有特殊需求,需要将RelayState的值写入 SAML 断言的自定义声明中供 SP 使用,可以通过自定义声明规则实现:

  1. 对于使用重定向绑定的SP发起请求,可通过解析请求上下文的查询字符串提取RelayState,声明规则语法如下:
c:[Type == "http://schemas.microsoft.com/ws/2012/01/insidecorporatenetwork"]
 => issue(Type = "RelayStateCustomClaim", Value = RegExMatch(RegExReplace(QueryString, "^(.+?(&|$))*RelayState=([^&]*)(.*)$", "$3"), "(.+)"));

注意:该规则仅适用于重定向绑定的请求,若使用POST绑定传递SAML请求,需要先开启ADFS请求上下文参数传递能力,再通过http://schemas.microsoft.com/2012/01/requestcontext/parameters/post属性提取请求体中的RelayState值。

异常排查

如果实际测试中发现SP未收到预期的RelayState,优先排查两项配置:

  • 确认对应SP的信任关系配置中,没有开启全局RelayStateForIdpInitiatedSignOn参数强制覆盖,该参数仅用于IdP发起的SSO场景默认值配置,开启强制覆盖后会替换SP发起请求携带的原有RelayState
  • 确认ADFS服务器版本为Windows Server 2012 R2及以上,低版本ADFS存在RelayState传递的已知Bug

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 18:15:03