SSO SAML2.0在PHP中的实现

SSO SAML2.0在PHP中的实现,php,certificate,single-sign-on,saml-2.0,Php,Certificate,Single Sign On,Saml 2.0,因此,我正在设置一个从我的网站到另一个网站的SSO实现。我知道如何构建请求并签署它们以及所有这些东西。我很难理解的是证书。具体来说,谁能拿到什么证书。我知道如何生成它们,但我不确定是否将证书发送到我要登录的网站,或者他们是否必须生成证书和密钥库并将证书发送给我们。在这一部分的过程中,我有一点困惑,我需要一些帮助来澄清 因为我正在访问他们的站点,在我看来,他们应该生成证书并将其发送给我们,并在他们的机器上保留密钥库以进行握手。如果必须同时生成这两个密钥库,那么密钥库通常保存在哪里?我们在我们的站点

因此,我正在设置一个从我的网站到另一个网站的SSO实现。我知道如何构建请求并签署它们以及所有这些东西。我很难理解的是证书。具体来说,谁能拿到什么证书。我知道如何生成它们,但我不确定是否将证书发送到我要登录的网站,或者他们是否必须生成证书和密钥库并将证书发送给我们。在这一部分的过程中,我有一点困惑,我需要一些帮助来澄清


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

这是公钥基础设施PKI,所以您可以获得对方的公钥证书。它通常使用SAML2元数据配置文件来完成,这样您就可以获得它们的公钥证书

看起来你是IdP如果他们想要加密属性,你需要使用他们的公钥来加密。您使用私钥对SAMLResponse进行签名,他们使用公钥对其进行验证。因此,每个人都会生成自己的密钥,并将它们保密,因为它们是用于签名的密钥。你交换公钥

您需要登录端点的证书,但另一方不需要看到此证书。他们只需要您的公钥证书用于XML交换,如果您是SP,您需要他们的证书来验证SAMLResponse上的签名

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