SAML 2.0 扩展迁移

本文档包含将 SAML 2.0 服务提供商从 Spring Security SAML Extensions 1.x 迁移到 Spring Security 的指南。由于 Spring Security 不提供身份提供商支持,因此迁移 Spring Security SAML Extensions 身份提供商不在本文档的范围之内。

由于这两种方法差异巨大,本文档将更侧重于模式,而非精确的搜索和替换步骤。

登录与注销

方法上的变化

Spring Security 在一些显著方面与 Spring Security SAML Extensions 采取了略有不同的方法。

简化启用

Spring Security SAML Extensions 对服务提供商的支持是通过一系列过滤器提供的,这些过滤器通过将每个过滤器按正确顺序手动添加到各种 Spring Security 过滤器链中来启用。

Spring Security 的 SAML 2.0 服务提供商支持通过 Spring Security DSL 方法启用:saml2Loginsaml2Logoutsaml2Metadata。它会选择要添加的正确过滤器,并将其放置在过滤器链中的适当位置。

更强的封装

与 Spring Security SAML Extensions 一样,Spring Security 的 SAML 支持基于 OpenSAML。Extensions 项目通过公共接口暴露 OpenSAML,模糊了两个项目之间的界限,有效地要求 OpenSAML,并使升级到更高版本的 OpenSAML 变得更加复杂。

Spring Security 提供了更强的封装。没有公共接口暴露 OpenSAML 组件,并且任何在其公共 API 中暴露 OpenSAML 的类都以 OpenSaml 前缀命名,以增加清晰度。

开箱即用的多租户

Spring Security SAML Extensions 为声明多个身份提供商并使用 idp 请求参数在登录时访问它提供了一些轻量级支持。这在运行时更改方面受到限制,并且也不允许依赖方和断言方之间存在多对多关系。

Spring Security 以 RelyingPartyRegistration 的形式将其 SAML 2.0 多租户功能内置到其默认 URL 和基本组件中。此组件充当依赖方元数据和断言方元数据之间的链接,所有配对都可以在 RelyingPartyRegistrationRepository 中查找。每个 URL 代表一个要检索的唯一注册配对。

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

示例矩阵

Spring Security 和 Spring Security SAML Extensions 都有关于如何配置服务提供商的示例

用例 Spring Security Spring Security SAML Extension

登录和注销

示例

示例

使用 SAML Extension URL 登录

示例

-

元数据支持

示例

-

您还可以在 Spring Security SAML Extension 的 GitHub 项目中查看一个展示示例。

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

未移植的功能

有一些功能尚未移植,目前也没有计划移植

  • SAML 2.0 响应的 HTTP-Redirect 绑定

  • Artifact 绑定支持

© . This site is unofficial and not affiliated with VMware.