SAML 解码器

解码 Base64 编码的 SAML 断言 XML。所有处理在浏览器中完成。

自动检测压缩 完整XML解析 客户端处理

如何使用 SAML 解码器

1

粘贴断言

粘贴 Base64 编码的 SAML 断言字符串。

2

解码

工具将自动解码 Base64 并解压缩(如需要)。

3

查看信息

查看 XML 格式的 SAML 断言和提取的关键信息。

什么是SAML?

安全断言标记语言(SAML)是一种基于XML的开放标准,用于在各方之间交换身份验证和授权数据,特别是在身份提供商(IdP)和服务提供商(SP)之间。SAML断言通常经过Base64编码,在通过HTTP重定向绑定时可能会进行deflate压缩。

SSO 身份验证

SAML 实现单点登录,用户只需认证一次即可访问多个服务

基于 XML 的断言

SAML 使用 XML 断言在各方之间传递身份验证和授权声明

安全绑定

SAML 支持 HTTP Redirect、POST 和 Artifact 绑定,实现安全令牌交换

常见问题

如何获取 SAML 断言?

可以从浏览器的网络请求中获取 SAML Response 参数,通常在 POST 请求体中。

SAML 断言是否经过压缩?

部分 SAML 实现会对断言进行 deflate 压缩后再 Base64 编码。本工具会自动检测并处理。

解码后的断言安全吗?

解码只是查看断言内容,不会修改。断言的安全性由数字签名保证。

SAML 请求和 SAML 响应有什么区别?

请求是服务提供方(SP)发送给身份提供方(IdP)、要求其认证用户的 samlp:AuthnRequest;响应则是返回的 samlp:Response,携带包含认证语句和属性的 saml:Assertion。两者都以 URL 编码(Redirect 绑定)或 HTML 表单 POST(POST 绑定)的形式传输。本工具可解码任意方向的数据。

SAML 消息中的 RelayState 是什么?

RelayState 是 SP 附加在请求中、IdP 必须随响应原样返回的不透明字符串——通常是登录后要重定向到的 URL。SAML 绑定规范建议将其保持在 80 字节以内,且它对 IdP 没有任何含义。当 SSO 登录后跳转到了错误的页面时,RelayState 丢失或损坏是首先要排查的原因。

如何判断 SAML 数据是否经过 Deflate 压缩?

在 HTTP-Redirect 绑定中,XML 先经过 raw-Deflate 压缩,再进行 Base64 编码,最后 URL 编码——这是规范规定的三个步骤。将 URL 编码后的值交给本工具:如果解压后得到以 < 开头的标记,说明数据经过压缩;如果直接以 <?xml 或 <saml 开头,则未压缩。POST 绑定的消息只做 Base64,不经过 Deflate。

最常见的 SAML 错误是由什么引起的?

时钟偏差——当 SP 与 IdP 的时钟相差超过允许的偏移量时,签名验证会失败;受众不匹配——断言中的 audienceRestriction 不包含 SP 的 entity ID;以及响应过期(NotOnOrAfter)。同样常见的还有:RelayState 丢失,以及 SP 要求签名但断言未签名。本工具显示的解码字段可让您直接逐一核查这些问题。

没有私钥也能解码已签名的 SAML 断言吗?

可以——解码并不等于验证。断言的 XML 任何人都能读取;其中的签名保障的是完整性,而非机密性。没有 IdP 的公钥证书,您无法证明断言是真实且未被篡改的。请谨慎对待解码后的内容:断言中往往包含电子邮件地址、用户组和权限信息。

{-- * External Resources Component(#18 Phase 3b 内容佐证工程) * 工具页「权威引用」区块:RFC / W3C / WHATWG / ECMA / IANA / 官方规范站 / Wikipedia。 * * - 接受 :slug 属性 → 经 config/tool-sources.php 家族矩阵渲染该工具的权威引用 * - slug 未命中映射时不渲染(无权威来源的工具静默跳过) * - 链接 title 保持英文(引用源专名);description 经 * common.resources.descriptions.{key} 本地化,lang 未命中回退英文(线上不裸奔) * - 链接保持 dofollow(rel="noopener noreferrer") * * @param string|null $slug --}}