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

ADFS 2.0不接受SAMLRequest请求,解码时提示存在无效数据

ADFS 2.0 无法接受SAMLRequest请求排查方案

该报错本质是ADFS对SAMLRequest做Deflate解压时拿到的数据流不符合格式要求,90%以上的场景是SAMLRequest的编码流程不符合SAML2.0 HTTP Redirect绑定规范导致的,按以下步骤排查即可:

  • 优先检查URL编码步骤
    SAML 2.0 HTTP Redirect绑定的标准处理流程为:明文XML → Deflate压缩 → Base64编码 → URL百分号编码。绝大多数该类报错都是遗漏了最后一步URL编码导致的:Base64编码结果中包含+、/、=三类特殊字符,直接作为URL参数传递时,+会被服务器解析为空格,导致Base64解码结果损坏,后续Deflate解压直接报错。你可以先把现有SAMLRequest的Base64字符串做URL编码后再拼接请求,验证是否恢复正常。
  • 检查Deflate压缩格式
    SAML规范要求使用原始Deflate流(RFC1951标准),不能携带zlib协议头尾(RFC1950标准)或gzip头尾。如果你使用的压缩库默认生成带zlib头的压缩结果,需要手动去掉前2字节的zlib头和后4字节的校验尾,或是配置压缩库参数输出原始Deflate流,参考正确处理代码示例:
    import zlib
    import base64
    import urllib.parse
    # 明文SAML请求
    authn_request = """<samlp:AuthnRequest xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol" ...>...</samlp:AuthnRequest>"""
    # wbits=-15代表输出无zlib头/尾的原始Deflate流
    compressed = zlib.compress(authn_request.encode('utf-8'), wbits=-15)
    b64_encoded = base64.b64encode(compressed).decode('utf-8')
    # 必须做URL编码再拼接请求
    url_encoded = urllib.parse.quote(b64_encoded)
    final_request_url = f"https://saml.mlads.mindlogic.app/adfs/ls?SAMLRequest={url_encoded}"
    
  • 修正XML格式错误
    你提供的AuthnRequest XML中IssueInstant属性值末尾多了一个多余空格:IssueInstant="2021-09-09T07:58:45Z ",需要删除Z后的空格避免后续XML解析阶段报错。
  • 交叉验证排除其他问题
    临时改用SAML HTTP POST绑定发送相同的AuthnRequest请求,如果ADFS可以正常处理,即可完全确认问题出在Redirect绑定的压缩编码环节,无需排查元数据、依赖方配置等其他内容。

内容的提问来源于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.04 17:27:02