Spring security 无法对传出邮件进行签名,因为在EmptyKeyManager上下文中未设置签名凭据
我已使用初始密钥管理器bean在我的应用程序中设置saml上下文:Spring security 无法对传出邮件进行签名,因为在EmptyKeyManager上下文中未设置签名凭据,spring-security,x509certificate,spring-saml,Spring Security,X509certificate,Spring Saml,我已使用初始密钥管理器bean在我的应用程序中设置saml上下文: <!-- Central storage of cryptographic keys --> <bean id="keyManager" class="org.springframework.security.saml.key.JKSKeyManager"> <constructor-arg value="classpath:security/samlKeystore.jks"/>
<!-- Central storage of cryptographic keys -->
<bean id="keyManager" class="org.springframework.security.saml.key.JKSKeyManager">
<constructor-arg value="classpath:security/samlKeystore.jks"/>
<constructor-arg type="java.lang.String" value="nalle123"/>
<constructor-arg>
<map>
<entry key="apollo" value="nalle123"/>
</map>
</constructor-arg>
<constructor-arg type="java.lang.String" value="apollo"/>
</bean>
这个配置对我的IDP很有效。也就是说,在验证传入的SAML消息后,它成功地对用户进行身份验证
此外,我还试图简单地用EmptyKeyManager实现替换此管理器,但上面出现了错误
在将这些更改部署到生产环境之前,最好了解几个问题:)
- 考虑到我的IDP对从samlKeystore.jks导入的默认公钥一无所知,它是如何工作的
- 如果我的配置不需要EmptyKeyManager,如何正确地将keyManager的初始实现替换为EmptyKeyManager李>
EmptyKeyManager
。您提到的错误表明SpringSAML确实需要在您的使用模式中创建一个。也许您正在使用HTTP工件绑定,并且需要对传出的工件请求消息进行签名
手册还显示了将当前的
keyManager
替换为EmptyKeyManager
谢谢@Vladimir的具体配置。可能我遇到的主要问题是我对这个jks密钥管理器的使用产生了误解。考虑到我们使用SP发起的SSO,我们需要先对SAML令牌进行数字签名,然后再将其发送给IDP。目前很明显,来自jks的证书用于消息级安全,而不是用于传输层。