我们正在公共URL上共享我们的SP元数据,其中也包含我们的公钥和SSO URL(绑定)。我完全理解公钥是在各方之间自由共享的。但我只想了解未经授权的用户是否可以访问我们的公钥(因为这可以在公开的元数据中找到),并且知道我们公司的SSO的URL(也可以在我们公开的元数据中找到) ),他们能够自我验证吗?我如何确保SAML断言仅来自授权来源?
答案 0 :(得分:1)
有人使用您的公钥会如何签署声明?他们肯定需要私人键。
这不仅仅是任何私钥 - 您的SP应该事先知道IdP的公钥(您不需要整个公众)键,主题名称和指纹应该足够了)。
然后,当一个断言来到SP时,它不仅验证签名本身,而且验证用于签署断言的证书。 SP通过将来自签名的证书信息与先前存储的关于有效IdP的公钥的信息进行比较来实现。
答案 1 :(得分:0)
SP应具有IdP的元数据,其中包括其签名证书。可以使用SP和IdP的元数据通过双向信任来保护SAML交换。 IdP通常会在AuthenticationStatement
中签署SAMLResponse
,并且SP会使用IdP元数据中的证书验证签名。此外,SP通常会将用户发送到IdP进行身份验证,因此SP是启动协议流的SP。