PHP 中的 SSO SAML2.0 实施

SSO SAML2.0 implementation in PHP

所以我正在设置从我的网站到另一个网站的 SSO 实施。我了解如何构建请求并对其进行签名以及所有这些内容。我无法理解的是证书。谁获得什么证书,要具体。我知道如何生成它们,但我不确定我是否将证书发送到我正在登录的网站,或者他们是否必须生成证书和密钥库并将证书发送给我们。对我来说,这个过程的这一部分有点混乱,我需要一些帮助来澄清。

由于我正在访问他们的站点,在我看来他们应该生成证书并将其发送给我们,并将密钥库保存在他们的机器上以进行握手。如果我必须生成两者,密钥库通常保存在哪里?我们在我们的网站上有几个实现,但是编写它们的开发人员不再在这里工作,并且几乎没有留下任何文档。另外,证书是可以在生产中使用的自签名证书吗?我相信是的,但只是想确定一下。任何澄清方面的帮助将不胜感激。

它是 public 密钥基础设施 (PKI),因此你们每个人都可以获得对方的 public 密钥证书。它通常使用 SAML2 元数据配置文件完成,因此您可以获得他们的 public 密钥证书。

看来您是 IdP 如果他们想要加密属性,您需要使用他们的 public 密钥来做到这一点。您使用您的私钥向他们签署 SAMLResponse,他们使用您的 public 密钥对其进行验证。所以你们每个人都生成自己的密钥并将它们保密,因为它们是用于签名的秘密密钥。您交换了 public 个密钥。

您需要为您的登录端点提供证书,但对方不需要看到此证书。他们只需要您的 public 密钥证书用于 XML 交换,您需要他们的证书来验证 SAMLResponse 上的签名(如果您是 SP)。

使用 SAML XML 的证书通常为 10 年自签名。