Spring Security SAML - 签名和解密

时间:2015-07-06 08:37:08

标签: spring-security saml-2.0 spring-saml

我正在尝试将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>

1 个答案:

答案 0 :(得分:2)

花了一些时间后,我发现这不是问题。签名验证不需要JKS密钥库,因为它使用SAML响应/元数据中的证书数据/方法进行验证。我们目前唯一需要的密钥库是解密断言,并且工作正常。