请解释 SAML2 签名和 PK

Please explain SAML2 Signatures and PKs

我正在开发 SAML2 服务提供商功能(支持 IdP 发起的 SSO)。

我理解的一般流程是: 1) 用户在 IdP 处进行身份验证。 2) 用户通过 HTTP POST 到我的 SAML 端点启动到我的 SP - 包含 XML 令牌。 3) 我的 SP 的断言消费者服务吃掉那个令牌,验证它并登录所述用户。

我不明白的是证书/私钥部分。我知道 IdP 与 SP 共享一个证书,并且该证书用于在到达时验证 SAML 令牌......但是,我找不到这方面的任何细节(官方 SAML 规范除外,我真的难以理解)。

我的问题是: 1)谁创建证书? IdP 还是 SP? 2)谁创建私钥? IdP 还是 SP? 3)密钥与证书有什么关系? 4) 密钥/证书是如何共享的? 5) 密钥/证书是如何创建的?

所以,如您所见,我只想要一个 PK/证书,供傻瓜解释。关于它们的创建者/创建方式/存储位置等...

非常感谢,

IDP 将使用私钥对正在生成并发送给 SP 的 SAML 令牌进行签名。 SP 将使用 public 密钥证书来验证 SAML 令牌中的签名。

私钥-public 密钥对将由 IDP 创建,私钥保存在 IDP 服务器上,供签名时使用。 public 密钥将作为元数据的一部分提供给 SP。

我建议您阅读 PKI 文章以了解 PKI 设置的详细信息。私钥的存储非常关键,因为它们是用来保证令牌不被篡改的。