【发布时间】:2021-12-10 19:25:35
【问题描述】:
在阅读了大量关于 SAML 协议的文档后,我仍然不明白 IDP 和 SP 之间的信任是如何工作的。
我知道 IDP 和 SP 都必须有一个包含 x509 证书的“元数据”文件。为了建立这种信任,IDP 和 SP 必须交换这些元数据文件。
但我不明白这在技术上是如何工作的。根据我的研究,许多 IDP 提供通过上传元数据文件以图形方式执行此操作。我的最终目标是在 Golang 中实现 SAML 协议。这就是为什么我想了解它是如何工作的。
提前致谢!
【问题讨论】:
-
这只是标准的 PKI。 IdP 使用私钥签署消息,SP 使用公钥验证签名,反之亦然。
-
感谢您的快速回复。那么元数据毕竟没有真正的交换?
-
是的。这就是交换公钥(以及其他设置)的方式。 Wikipedia page 是一个很好的起点,但请记住,这是一个 BIG 协议。我希望 golang 已经有很好的 XML 规范化和 XML 签名库,否则你会得到享受。
-
之前编写过多个部分 SAML 实现,我认为一个完整的、安全的、从头开始的实现是一个多年的项目,即使没有 XML/加密的东西。
-
我已经阅读了维基百科文档,但我没有找到任何关于元数据交换的信息。但是,谢谢,我会看得更准确。实际上,SAML 库已经存在于 golang 中,所以我想我会以它们为基础。但是我没有发现任何关于 IDP 和 SP 之间信任的信息。所以我想尝试自己实现它