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

SAML请求Timestamp的DigestValue不匹配,疑为Exclusive C14N执行错误求助

SAML请求Timestamp节点DigestValue计算错误排查方案
  • 确认Exclusive C14N执行细节
    独占规范化(Exclusive C14N)的核心是仅保留节点自身及实际依赖的命名空间,需严格检查:

    • 仅保留与Timestamp直接关联的命名空间声明,比如xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd",多余命名空间必须剔除。
    • 属性按命名空间URI+本地名称的字典序排列,wsu:Id需优先于普通属性(若存在)。
    • Created和Expires节点的文本必须是无多余空白的ISO8601格式,比如2025-10-25T10:36:01Z,不能有换行、缩进或空格。
  • 验证规范化后的XML字符串
    提取Exclusive C14N处理后的Timestamp节点字符串,确保格式紧凑无冗余,示例正确格式如下:

    <wsu:Timestamp wsu:Id="TS-b71cc963-f3dc-4331-8cd7-7220251036a1" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"><wsu:Created>2025-10-25T10:36:01Z</wsu:Created><wsu:Expires>2025-10-25T10:41:01Z</wsu:Expires></wsu:Timestamp>
    

    注意:所有节点必须连续拼接,不能有换行或缩进。

  • 检查哈希与编码环节

    • SHA256计算必须基于UTF-8编码的规范化XML字符串,禁止使用其他编码格式。
    • Base64编码需遵循RFC4648标准,输出为无换行的连续字符串。
  • 用代码验证计算流程
    在线工具可能存在默认设置偏差,建议用代码直接验证,示例Python片段:

    from lxml import etree
    import hashlib
    import base64
    
    # 替换为你的Timestamp节点XML
    timestamp_xml = '''<wsu:Timestamp wsu:Id="TS-b71cc963-f3dc-4331-8cd7-7220251036a1" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"><wsu:Created>2025-10-25T10:36:01Z</wsu:Created><wsu:Expires>2025-10-25T10:41:01Z</wsu:Expires></wsu:Timestamp>'''
    root = etree.fromstring(timestamp_xml)
    
    # 执行Exclusive C14N
    c14n_str = root.c14n(exclusive=True, with_comments=False)
    
    # 计算SHA256+Base64
    sha256_result = hashlib.sha256(c14n_str).digest()
    digest_value = base64.b64encode(sha256_result).decode('utf-8')
    print(digest_value)
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 01:22:41