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

SAML Redirect请求是否需从已注册域名发起?ADFS报解码错误如何解决

问题结论

首先明确:该解码错误和是否从注册域名跳转发起请求无关,ADFS返回解码错误是编码流程和XML格式问题导致的。

错误原因排查
  • 编码流程不符合SAML 2.0 Redirect绑定规范
    SAML Redirect绑定要求SAMLRequest的处理顺序为:
    1. 生成无格式错误的AuthnRequest XML
    2. 进行DEFLATE压缩(注意要去掉zlib头和尾,只保留压缩数据)
    3. 进行BASE64编码
    4. 进行URL编码,再拼接为查询参数
      你直接将BASE64编码结果拼入URL,BASE64中的+、/、=等特殊字符会被HTTP服务端解析时转义,导致原始BASE64串被篡改,无法正常解码。在线解码工具可以正常解析是因为你输入的是原始未被转义的BASE64串,没有经过URL传输环节的字符篡改。
  • 原始XML存在格式错误
    你提供的AuthnRequest XML中存在大量不必要的空格,比如< samlp: AuthnRequest标签名与前缀之间的空格、http: // localhost: 4200属性值中间的多余空格,虽然部分低容错的在线工具可以正常解析,但ADFS的XML解析器会严格校验格式,格式错误也会触发解码失败。
修复方案
  1. 先清理XML中的所有多余空格,确保标签、属性、属性值格式符合XML规范,示例清理后的XML如下:
<samlp:AuthnRequest
xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol"
xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion"
ID="aaf23196-1773-2113-474a-fe114412ab72"
Version="2.0"
IssueInstant="2021-09-10T14:52:21Z"
AssertionConsumerServiceIndex="0"
AttributeConsumingServiceIndex="0">
<saml:Issuer>http://localhost:4200</saml:Issuer>
<samlp:NameIDPolicy
Format="urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress"/>
</samlp:AuthnRequest>
  1. 严格按照SAML Redirect绑定流程编码,BASE64编码后必须做URL编码再拼接为查询参数
  2. 额外确认:http://localhost:4200需和ADFS侧注册的信赖方信任的标识符完全一致,否则解码通过后也会触发后续校验错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 05:27:02