我们是不是需要 IDP 发起的 SSO (SAML) 中的 Keystore/JKSKeyManager?
Posted
技术标签:
【中文标题】我们是不是需要 IDP 发起的 SSO (SAML) 中的 Keystore/JKSKeyManager?【英文标题】:Do we need Keystore/JKSKeyManager in IDP initiated SSO (SAML)?我们是否需要 IDP 发起的 SSO (SAML) 中的 Keystore/JKSKeyManager? 【发布时间】:2015-04-20 17:11:58 【问题描述】:我已经使用 Spring-SAML 扩展成功实现了 SSO 身份验证。我们支持 IDP 发起的 SSO 到我们的应用程序的主要要求。好吧,通过使用 spring-security-saml2-sample 中的配置,甚至 SP 启动的 SSO 流也适用于我们。
问题: 是否在 IDP 发起的 SSO 中使用了密钥库(如果元数据有证书)?如果不使用,我想从 securityContext.xml 中删除密钥库配置。
注意:我们不需要由 SP 发起的 SSO 和全局注销。我们使用 Okta 作为 IDP。
【问题讨论】:
【参考方案1】:这是一个很好的功能请求。我已经为您打开了https://jira.spring.io/browse/SES-160,并通过以下文档在Spring SAML's trunk 中提供支持:
如果您的应用程序不需要创建数字签名 和/或解密传入的消息,可以使用空的 不需要任何 JKS 文件的密钥库的实现 -
org.springframework.security.saml.key.EmptyKeyManager
。这可以是 例如,仅使用 IDP 初始化的单点登录时。 请注意,在使用EmptyKeyManager
时,一些 Spring SAML 功能将不可用。这至少包括 SP 初始化的 单点登录、单点注销、使用其他密钥ExtendedMetadata
和元数据签名验证。使用 以下 bean 以初始化EmptyKeyManager
:
<bean id="keyManager" class="org.springframework.security.saml.key.EmptyKeyManager"/>
【讨论】:
谢谢@Vladimír。很高兴您已将其添加为功能。我认为此功能仅在将来的版本中可用。与任何以前的 Spring SAML 版本一起使用,创建我们自己的 EmptyKeyManager 听起来不错,就像您宁愿扩展 JKSKeyManager 一样? 是的,您可以通过简单地包含 EmptyKeyManager 类将其反向移植到以前的版本。如果您使用示例模块中的 MetadataController,您还需要将其依赖关系从 JKSKeyManager 更改为 KeyManager。以上是关于我们是不是需要 IDP 发起的 SSO (SAML) 中的 Keystore/JKSKeyManager?的主要内容,如果未能解决你的问题,请参考以下文章
Spring security SAML IDP 发起的 SSO