Spring SAML:除了使用 /saml/metadata 端点之外,生成 SP 元数据的替代方法



背景:我的 Web 应用程序在 PROD 中运行,真实用户正在使用它。初始身份验证是使用 Spring 基本安全性实现的。

最近,客户端决定使用 SSO 进行身份验证,因此我的应用应充当客户端 IdP 的 SP。我使用 Spring SAML 将我的应用程序配置为 SP。

在 QA 环境中与客户端 IdP 集成涉及后续步骤:

  1. 获取并存储从客户收到的 IdP 元数据文件。
  2. 在环境中部署具有 SP 配置的代码。
  3. 使用端点生成 SP 元数据文件/saml/metadata并与客户共享。
  4. 从客户 IdP 端获得绿灯,将 SP 元数据文件放在正确的位置。
  5. 验证 SSO 是否正常工作。

现在,是时候在 PROD 环境中部署 SP SSO 配置,并将其与客户端 PROD IdP 集成。

我不喜欢将上述方法用于 PROD,因为在生成应用程序 SP 元数据文件并将其放在客户 IdP 的正确位置之前,真实用户将无法登录到应用程序。

谁能告诉我在 PROD 上部署 SSO 配置之前,如何提前为我的应用程序生成 SP 元数据文件?

(1) 引用 "最近,客户端决定使用 SSO 进行身份验证,因此我的应用程序应充当客户端 IdP 的 SP。我使用 Spring SAML 将我的应用程序配置为 SP。

回应

我假设您使用Spring Security SAML的官方GitHub存储库提供的Spring SAML来"将您的应用程序配置为SP"。

(2) 引用"在 QA 环境中与客户 IdP 集成涉及后续步骤:.."

回应

关于将 Web 应用程序作为 SP 与客户端 IdP 集成的五 (5) 个步骤(由您的帖子提供)是"在 PROD 环境中部署 SP SSO 配置并将其与客户端 PROD IdP 集成"的实用 SAML 标准。

我分享了将 Web 应用程序作为 SAML SP 与 SAML IdP 集成的实践经验,回答了我最近的另一个 Stackoverflow 问题"我提供了一个说明来解决另一个 Stackoverflow 如何生成我的 Java Spring 应用程序的元数据文件,以便与 Ping Federate 等身份提供程序建立连接?

(3) 引用"我不喜欢将上述方法用于 PROD,因为在生成应用程序 SP 元数据文件并将其放置在客户 IdP 的正确位置之前,真实用户将无法登录到应用程序。

回应

如果您"不喜欢将上述方法用于 PROD",您可以修改 "spring-security-saml/samples/boot/simple-service-provider/"(由 Spring Security SAML 的官方 GitHub 存储库提供)的源代码,将您的 Web 应用程序配置为 SAML SP。

(4)问题"谁能告诉我,在 PROD 上部署 SSO 配置之前,如何提前为我的应用程序生成 SP 元数据文件?">

答:

(I) 关于"如何运行身份提供程序 (IDP) 和服务提供商 (SP) 的简单示例"的自述文件(由 Spring Security SAML 的官方 GitHub 存储库提供)将指导您"在 PROD 上部署 SSO 配置之前,如何提前为我的应用程序生成 SP 元数据文件"。

(II)我重点介绍了"在PROD上部署SSO配置之前,如何提前为我的Web应用程序生成Spring Basic Security的SAML SP元数据文件"的相关信息(引用您的问题)。

步骤 2 - 启动服务提供商

服务提供商在 http://localhost:8080/sample-sp 上运行

$git clone https://github.com/spring-projects/spring-security-saml
$cd spring-security-saml
$./gradlew :spring-security-saml-samples/boot/simple-service-provider:bootRun &

(II.a) 启动网页浏览器以访问网址 http://localhost:8080/sample-sp 以确保 Spring Security SAML 服务提供商运行良好。

(II.b) 启动 Web 浏览器以访问 SP 元数据端点
http://localhost:8080/sample-sp/saml/sp/metadata
下载或"在 PROD 上部署 SSO 配置之前,提前为我的应用生成 SP 元数据文件"(引用您的问题)。

(5)问题"Spring SAML:除了使用/saml/metadata 端点之外,生成 SP 元数据的替代方法">

答:

你可以修改"spring-security-saml/samples/boot/simple-service-provider/src/main/java/sample/config/SecurityConfiguration.java"(由Spring Security SAML的官方GitHub存储库提供)的源代码,以"除了使用/saml/sp/metadata endpoint之外生成SP元数据"。

例如,如果要从特定端点(如/example/metadata)生成 SP 元数据,则只需替换
">super("/saml/sp/", beanConfig);">
(
在下面显示的源代码中) ">super("/example/", beanConfig);">

public SamlSecurity(BeanConfig beanConfig, @Qualifier("appConfig") AppConfig appConfig) {
super("/saml/sp/", beanConfig);
this.appConfig = appConfig;
}

只要您知道端点的 URI 和签名证书,就可以手动生成它们并在配置中指定它。

最新更新