所以我正在设置从我的网站到另一个站点的SSO实现。我理解如何构建请求并签署它们以及所有这些内容。我无法理解的是证书。谁得到什么证书,具体而言。我知道如何生成它们,但我不确定是否将证书发送到我正在登录的网站,或者是否必须生成证书和密钥库并将证书发送给我们。在这个过程的这一部分,我有点困惑,我可以用一点帮助来澄清。
由于我正在访问他们的网站,在我看来他们应该生成证书并将其发送给我们,并将密钥库保留在他们的机器上以进行握手。如果我必须生成两者,密钥库通常保存在哪里?我们在我们的网站上有几个这样的实现,但编写它们的开发人员不再在这里工作,几乎没有文档留下。此外,证书是否可以在生产中使用的自签名证书?我相信它是,但只是想确定。任何澄清的帮助将不胜感激。
答案 0 :(得分:1)
它是公钥基础结构(PKI),因此您可以获得对方的公钥证书。通常使用SAML2元数据配置文件完成,因此您可以获得其公钥证书。
如果您想要加密的属性,您需要使用其公钥来执行此操作,您似乎是IdP。您使用私钥向SAMLResponse签名,并使用您的公钥对其进行验证。因此,每个人都会生成自己的密钥并将其保密,因为它们是用于签名的密钥。你交换公钥。
您的登录端点需要证书,但另一方不需要查看此证书。他们只需要您的公钥证书用于XML交换,您需要他们的证书来验证SAMLResponse上的签名(如果您是SP)。
使用SAML XML的证书通常为10年自签名。