无法签署传出消息,因为在 EmptyKeyManager 的上下文中未设置签名凭据

Cannot sign outgoing message as no signing credential is set in the context with EmptyKeyManager

我已经在我的应用程序中使用初始密钥管理器 bean 设置了 saml 上下文:

<!-- 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 实现简单地替换此管理器,但出现上述错误。

在将这些更改部署到生产环境之前,有几个问题需要了解 :)。

如您在手册 (chapter 8.1) 中所见,如果您的应用程序不需要创建数字签名,则只能使用 EmptyKeyManager。您提到的错误表明 Spring SAML 确实需要在您的使用模式中创建一个。也许您正在使用 HTTP-Artifact 绑定并需要对传出的 ArtifactRequest 消息进行签名?

手册还显示了将当前 keyManager 替换为 EmptyKeyManager 的确切配置行。