我们是不是需要 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 saml - IDP 发起的 SSO

Spring security SAML IDP 发起的 SSO

在哪里测试 IdP 发起的 SSO?

如何在身份提供者 (IdP) 发起的 SAML sso 中维护状态参数?

IDP 为 Spring SAML 扩展启动了 SSO

Cognito缺乏IDP发起的SSO