无法签署传出消息,因为在 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 实现简单地替换此管理器,但出现上述错误。
在将这些更改部署到生产环境之前,有几个问题需要了解 :)。
- 考虑到我的 IDP 对从 samlKeystore.jks 导入的默认 public 密钥一无所知,它是如何工作的?
- 如果我的配置不需要,如何将 keyManager 的初始实现正确替换为 EmptyKeyManager?
如您在手册 (chapter 8.1) 中所见,如果您的应用程序不需要创建数字签名,则只能使用 EmptyKeyManager
。您提到的错误表明 Spring SAML 确实需要在您的使用模式中创建一个。也许您正在使用 HTTP-Artifact 绑定并需要对传出的 ArtifactRequest 消息进行签名?
手册还显示了将当前 keyManager
替换为 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 实现简单地替换此管理器,但出现上述错误。
在将这些更改部署到生产环境之前,有几个问题需要了解 :)。
- 考虑到我的 IDP 对从 samlKeystore.jks 导入的默认 public 密钥一无所知,它是如何工作的?
- 如果我的配置不需要,如何将 keyManager 的初始实现正确替换为 EmptyKeyManager?
如您在手册 (chapter 8.1) 中所见,如果您的应用程序不需要创建数字签名,则只能使用 EmptyKeyManager
。您提到的错误表明 Spring SAML 确实需要在您的使用模式中创建一个。也许您正在使用 HTTP-Artifact 绑定并需要对传出的 ArtifactRequest 消息进行签名?
手册还显示了将当前 keyManager
替换为 EmptyKeyManager
的确切配置行。