Spring security spring security saml使用哪个密钥?

Spring security spring security saml使用哪个密钥?,spring-security,spring-saml,opensso,Spring Security,Spring Saml,Opensso,我正在使用SpringSecurity的开放saml库进行身份验证 我的服务提供者是用SpringSAML配置的SpringWeb应用程序。 我的IDP是OpenSSO 在spring-security-saml2-core库中,永远不会调用JKSKeyManager,但会调用KeyManager 那么,库是使用.jks密钥库文件作为其密钥还是使用“apollo/nalle123”作为其密钥呢?它们的区别是什么?org.springframework.security.saml.key.KeyM

我正在使用SpringSecurity的开放saml库进行身份验证

我的服务提供者是用SpringSAML配置的SpringWeb应用程序。 我的IDP是OpenSSO

在spring-security-saml2-core库中,永远不会调用JKSKeyManager,但会调用KeyManager


那么,库是使用.jks密钥库文件作为其密钥还是使用“apollo/nalle123”作为其密钥呢?它们的区别是什么?

org.springframework.security.saml.key.KeyManager是一个接口,
org.springframework.security.saml.key.JKSKeyManager
是它的实现。因此,如果您看到对
KeyManager
的调用,在默认配置中,这意味着它们正在点击
JKSKeyManager

apollo/nalle123
密钥存储在
.jks
文件中(
samlKeystore.jks
在示例应用程序中),配置为由
KeyManager
使用
Apollo
.jks
文件中密钥的别名,
nalle123
是其密码


Spring SAML结合了
KeyManager
中提供的密钥和SAML元数据中提供的密钥的使用。

谢谢Vladimir。但是如果我将OpenSSO上的.jks文件更改为来自另一个OpenSSO实例,同时保持SP上的.jks文件不变。我仍然能够成功地验证。特别是在spring security saml中AbstractProfileBase的第271行,它成功地进行了验证。我有什么遗漏吗?它是否应该检测到IDP和SP的.jks密钥不再相同?您如何将IDP元数据导入SP?您发送给SP的消息是否经过数字签名?我将OpenSSO生成的idp.xml和keystore.jks文件复制到SP的war文件中。是的,从IDP发送到SP的SAML断言已签名(X509证书)。也许我误解了.jsk文件的用途,它是带有密钥还是我们必须用密钥填充它?Spring SAML中的默认jks带有别名为“apollo”的私钥。此密钥用于由Spring SAML创建数字签名。元数据包含IDP的公钥,该公钥在SP中用于验证IDP创建的签名。您不应该将jks从OpenSSO复制到Spring SAML,因为它包含您的SP不应该访问的OpenSSO私钥。我认为阅读OpenSSO和Spring SAML的手册将帮助您更好地理解IDP和SP之间的信任是如何建立和配置的。此外,SAML规范包含良好的信息。