本地检查 SAML 断言:Issuer、Audience 与有效期
在本地解析 SAML XML 或 Base64,核对签发者、受众和时间字段。说明解析、签名存在与真正签名验证的区别,避免误判登录信任。
准备断言内容
SAML 检查器接受 XML 原文或标准 Base64 编码的 XML。可以先用工具页的虚构示例了解输出结构,再处理自己的调试内容。
输入需要以 Assertion 或 Response 元素为根。工具不会跳转登录、读取浏览器 Cookie 或请求身份提供方。
对照四组常见字段
Issuer 表示声明的签发方;Audience 表示声明的受众;NameID 是被声明的主体标识。检查拼写、大小写和预期服务配置是否一致。
Conditions 中的 NotBefore 和 NotOnOrAfter 描述断言的时间条件。界面保留原始字段,便于与身份系统日志中的 UTC 时间对照。
看到签名不等于签名有效
signaturePresent 只表示 XML 中存在 Signature 元素。signatureVerified 始终为 false,因为此工具不验证证书链、XML 签名和接收方信任配置。
不要把解析输出当作身份凭据。真正的登录验证仍由服务提供方按协议、可信密钥、时间窗口和防重放策略完成。
处理完成后清理输入
输入和文件在浏览器中解析,不发送至 Neatbo 服务端。外部实体与 DTD 会被拒绝。
断言可能包含身份信息和仍在有效期内的登录材料。复制给同事前,应在自己的流程中去除真实标识和敏感字段;Neatbo 不自动脱敏。
区分可读消息和可信登录
先使用虚构 Assertion,而不是正在使用的登录响应。将提取字段与原始 XML 一起检查,确认数值确实来自预期元素。便于阅读的字段摘要并不是完整的协议验证器。
排查实际登录失败时,应把服务提供方的错误与其配置的签发者、接收者、受众和时间策略逐项对照。签名校验和防重放仍由使用可信配置的服务提供方负责;此工具不会代替它验证这些策略。
| 字段 | 比较内容 | 不能证明什么 |
|---|---|---|
| Issuer | 配置中的精确标识 | 该签发者确实签署消息 |
| Audience | 预期服务标识 | 接收者具有权限 |
| NotBefore / NotOnOrAfter | UTC 值与服务策略 | 断言现在一定会被接受 |
| signaturePresent | 是否存在 Signature 元素 | 签名或证书有效 |
<Assertion xmlns="urn:oasis:names:tc:SAML:2.0:assertion">
<Issuer>https://idp.example.test</Issuer>
<Subject><NameID>demo-user</NameID></Subject>
</Assertion>完成前的检查清单
- 此样例为虚构且未签名。
- 核对原始 UTC 值,不仅依赖本地时间显示。
- 分享样例前移除身份标识和登录材料。
- 不要把 signatureVerified: false 当作信任校验成功。
参考资料
- OASIS:SAML 2.0 Core
提供断言元素与条件的协议参考;检查器不实现完整的 SAML 信任验证。