如何解码SAML?求助解码国税部门的SAML编码消息
解码疑似SAML格式国税消息的步骤
SAML消息核心是XML格式,通常会经过DEFLATE压缩+Base64编码(部分场景直接Base64),你用工具失败大概率是没处理压缩环节,试试以下分步操作:
- 先清理原始字符串:如果消息来自URL参数(比如带
SAMLResponse=前缀),只保留=后面的编码内容,确保没有多余空格、换行或截断。 - 分步解码:
- 先尝试直接Base64解码:
- Linux/macOS命令行:
echo "你的编码字符串" | base64 -d - Windows PowerShell:
[System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String("你的编码字符串"))
如果输出是清晰的XML(开头有<saml:Assertion>或<samlp:Response>标签),就完成了;如果是乱码,说明有DEFLATE压缩,继续下一步。
- Linux/macOS命令行:
- 处理DEFLATE压缩:
- Linux/macOS命令行:
echo "你的编码字符串" | base64 -d | zcat - Windows可以用PowerShell脚本处理压缩字节流:
$encoded = "你的编码字符串" $bytes = [System.Convert]::FromBase64String($encoded) $stream = New-Object System.IO.MemoryStream($bytes) $deflate = New-Object System.IO.Compression.DeflateStream($stream, [System.IO.Compression.CompressionMode]::Decompress) $reader = New-Object System.IO.StreamReader($deflate) $xmlContent = $reader.ReadToEnd() $reader.Close() $deflate.Close() $stream.Close() Write-Output $xmlContent
- Linux/macOS命令行:
- 先尝试直接Base64解码:
- 工具使用技巧:如果再用在线解码工具,务必勾选Decode DEFLATE选项(多数SAML工具都有这个开关),之前可能漏了这一步导致失败。
另外注意:部分国税系统可能对SAML消息做了URL编码,这种情况要先做URL解码,再执行上述Base64+DEFLATE操作。
内容的提问来源于stack exchange,提问作者János
相关产品推荐
相关产品推荐

