spring security saml使用哪个密钥?
Posted
技术标签:
【中文标题】spring security saml使用哪个密钥?【英文标题】:Which key is used by spring security saml? 【发布时间】:2015-03-04 10:56:23 【问题描述】:我正在使用 Spring Security 的开放式 saml 库进行身份验证。
我的服务提供者是我用 spring saml 配置的 spring web 应用程序。 我的 IDP 是 OpenSSO。
在 spring-security-saml2-core 库中,从不调用 JKSKeyManager,但会调用 KeyManager。
那么库是使用 .jks 密钥库文件作为其密钥还是使用“apollo/nalle123”作为其密钥?他们有什么区别?
【问题讨论】:
【参考方案1】:org.springframework.security.saml.key.KeyManager
是一个接口,org.springframework.security.saml.key.JKSKeyManager
是它的实现。因此,如果您看到对KeyManager
的调用,在默认配置中,这意味着他们正在访问JKSKeyManager
。
apollo/nalle123
密钥存储在.jks
文件中(示例应用程序中的samlKeystore.jks
),配置为供KeyManager
使用。 Apollo
是.jks
文件中密钥的别名,nalle123
是其密码。
Spring SAML 结合了 KeyManager
中提供的密钥和 SAML 元数据中提供的密钥的使用。
【讨论】:
谢谢弗拉基米尔。但是,如果我将 OpenSSO 上的 .jks 文件更改为来自 OpenSSO 的另一个实例,同时保持我的 SP 上的 .jks 文件相同。我仍然能够成功验证。特别是在 spring-security-saml 中 AbstractProfileBase 的 Line271 处,它成功验证。有什么我想念的吗?它是否应该检测到 IDP 和 SP 的 .jks 密钥不再相同? 您如何将 IDP 元数据导入您的 SP?您发送给 SP 的消息是否经过数字签名? 我将 OpenSSO 生成的 idp.xml 和 keystore.jks 文件复制到我的 SP 的 war 文件中。是的,从 IDP 发送到 SP 的 SAML 断言已签名(X509 证书)。也许我误解了 .jsk 文件的用途,它是否带有密钥或者我们必须用密钥填充它? Spring SAML 中的默认 jks 带有一个别名为“apollo”的私钥。此密钥用于通过 Spring SAML 创建数字签名。元数据包含 IDP 的公钥,在 SP 中用于验证 IDP 创建的签名。您不应将 jks 从 OpenSSO 复制到 Spring SAML,因为它包含您的 SP 不应访问的 OpenSSO 的私钥。我认为通读 OpenSSO 和 Spring SAML 的手册将帮助您更好地了解 IDP 和 SP 之间的信任是如何建立和配置的。 SAML 规范也包含很好的信息。以上是关于spring security saml使用哪个密钥?的主要内容,如果未能解决你的问题,请参考以下文章
使用 spring-security-saml 在应用程序中没有配置 IDP 错误
Spring Security SAML 扩展和@PreAuthorize
在使用 Oauth、SAML 和 spring-security 的多租户的情况下从 spring-security.xml 中获取错误
未抛出 Spring Security SAML DisabledException
配置 ADFS 3.0 / SAML 2.0 以使用 Spring Security 进行 SSO 集成
如何使用 Spring Security SAML 插件在项目中指定 updatePasswordUrl,如 loginFormUrl = '/saml/login'