此版本仍在开发中,尚未被视为稳定版本。如需最新稳定版本,请使用 Spring Security 7.0.4spring-doc.cadn.net.cn

SAML 2.0 扩展迁移

本文档提供了将 SAML 2.0 服务提供者(Service Providers)从 Spring Security SAML Extensions 1.x 迁移到 Spring Security 的指导。由于 Spring Security 本身不提供身份提供者(Identity Provider)支持,因此迁移 Spring Security SAML Extensions 的身份提供者不在本文档的范围之内。spring-doc.cadn.net.cn

由于这两种方法彼此之间差异显著,本文档将更侧重于介绍模式,而非精确的搜索与替换步骤。spring-doc.cadn.net.cn

登录与注销

方法变更

Spring Security 在几个显著方面采用了与Spring Security SAML Extensions略有不同的方法。spring-doc.cadn.net.cn

简化启用

Spring Security SAML 扩展对服务提供方(Service Providers)的支持是通过一系列过滤器实现的,这些过滤器需要手动按正确顺序添加到各个 Spring Security 过滤器链中。spring-doc.cadn.net.cn

Spring Security 的 SAML 2.0 服务提供商支持通过 Spring Security DSL 方法启用: saml2Loginsaml2Logoutsaml2Metadata。它会选择正确的过滤器进行添加,并将它们放置在过滤器链中的适当位置。spring-doc.cadn.net.cn

更强的封装性

与 Spring Security SAML 扩展一样,Spring Security 的 SAML 支持也是基于 OpenSAML 构建的。该扩展项目通过公开接口暴露了 OpenSAML,模糊了这两个项目之间的界限,实际上强制依赖了 OpenSAML,从而使升级到更高版本的 OpenSAML 变得更加复杂。spring-doc.cadn.net.cn

Spring Security 提供了更强的封装性。没有任何公共接口暴露 OpenSAML 组件,任何在其公共 API 中暴露 OpenSAML 的类都以 OpenSaml 作为前缀命名,以提供额外的清晰度。spring-doc.cadn.net.cn

开箱即用的多租户支持

Spring Security SAML 扩展提供了一些轻量级的支持,允许声明多个身份提供商(Identity Provider),并在登录时通过 idp 请求参数进行访问。然而,这种方式在运行时动态修改配置方面存在局限性,同时也无法支持信赖方(relying party)与断言方(asserting party)之间的多对多关系。spring-doc.cadn.net.cn

Spring Security 在其默认 URL 和基本组件中内置了 SAML 2.0 多租户支持,其形式为 RelyingPartyRegistration。该组件充当依赖方(Relying Party)元数据与断言方(Asserting Party)元数据之间的链接,所有配对均可在 RelyingPartyRegistrationRepository 中进行查找。每个 URL 都代表一个唯一的注册配对,用于检索。spring-doc.cadn.net.cn

无论是 AuthnRequests、Responses、LogoutRequests、LogoutResponses 还是 EntityDescriptors,每个过滤器都基于 RelyingPartyRegistrationRepository,因此本质上是多租户的。spring-doc.cadn.net.cn

示例矩阵

Spring Security 和 Spring Security SAML 扩展都提供了如何配置服务提供方(Service Provider)的示例:spring-doc.cadn.net.cn

用例 Spring Security Spring Security SAML 扩展

登录与注销spring-doc.cadn.net.cn

示例spring-doc.cadn.net.cn

示例spring-doc.cadn.net.cn

使用 SAML 扩展 URL 登录spring-doc.cadn.net.cn

示例spring-doc.cadn.net.cn

-spring-doc.cadn.net.cn

元数据支持spring-doc.cadn.net.cn

示例spring-doc.cadn.net.cn

-spring-doc.cadn.net.cn

您还可以在Spring Security SAML 扩展的 GitHub 项目中查看一个展示示例。spring-doc.cadn.net.cn

Spring Security 不支持 SAML 2.0 响应的 HTTP-Redirect 绑定。 根据 SAML 规范,由于 URL 长度和签名限制,SAML 响应不允许使用 HTTP-Redirect 绑定。尝试使用此绑定可能会导致意外错误。 在配置您的身份提供者时,请改用 HTTP-POST 绑定。spring-doc.cadn.net.cn

未移植的功能

有一些功能尚未移植过来,而且目前尚无计划进行移植:spring-doc.cadn.net.cn