我正在尝试将Spring Security SAML用作我的一个项目的SP。 SAML2.0断言来自第三方系统并且已获得数字签名,并且断言已加密。
我尝试使用两个证书/密钥创建一个Java密钥存储区(一个用于签名,一个用于加密),但它不起作用。如果我只有一个jks用于签名或解密,则其中一个工作。在两个证书/密钥使用签名和解密的任何地方都找不到任何示例。以下是JKSKeymanager配置。任何帮助都将受到高度赞赏。
哪个不起作用
<beans:bean id="keyManager" class="org.springframework.security.saml.key.JKSKeyManager">
<beans:constructor-arg value="file:${config.location}/defaultSAMLKeyStore.jks"/>
<beans:constructor-arg type="java.lang.String" value="Welcome1"/>
<beans:constructor-arg>
<beans:map>
<beans:entry key="samlAssertionEncryption" value="Welcome1"/>
<beans:entry key="samlSignature" value="Welcome1"/>
</beans:map>
</beans:constructor-arg>
<beans:constructor-arg type="java.lang.String" value="samlSignature"/>
</beans:bean>
当我们交换密钥时签名/(或)解密工作
<beans:bean id="keyManager" class="org.springframework.security.saml.key.JKSKeyManager">
<beans:constructor-arg value="file:${config.location}/defaultSAMLKeyStore.jks"/>
<beans:constructor-arg type="java.lang.String" value="Welcome1"/>
<beans:constructor-arg>
<beans:map>
<beans:entry key="samlSignature" value="Welcome1"/>
</beans:map>
</beans:constructor-arg>
<beans:constructor-arg type="java.lang.String" value="samlSignature"/>
</beans:bean>
答案 0 :(得分:2)
花了一些时间后,我发现这不是问题。签名验证不需要JKS密钥库,因为它使用SAML响应/元数据中的证书数据/方法进行验证。我们目前唯一需要的密钥库是解密断言,并且工作正常。