Spring SAML:除了使用/SAML/metadata端点之外,还可以使用其他方法生成SP元数据

Spring SAML:除了使用/SAML/metadata端点之外,还可以使用其他方法生成SP元数据,spring,spring-security,saml,saml-2.0,spring-saml,Spring,Spring Security,Saml,Saml 2.0,Spring Saml,背景:我的web应用程序正在PROD中运行,真正的用户正在使用它。初始身份验证是使用Spring Basic Security实现的 最近,客户端决定使用SSO进行身份验证,所以我的应用程序应该充当客户端IdP的SP。我使用SpringSAML将我的应用程序配置为SP 在QA环境中与客户IdP集成包括以下步骤: 获取并存储从客户处收到的IdP元数据文件 在环境上部署具有SP配置的代码 使用/saml/metadata端点生成SP元数据文件,并与客户共享 从客户IdP方面获得绿灯,表示SP元数据文

背景:我的web应用程序正在PROD中运行,真正的用户正在使用它。初始身份验证是使用Spring Basic Security实现的

最近,客户端决定使用SSO进行身份验证,所以我的应用程序应该充当客户端IdP的SP。我使用SpringSAML将我的应用程序配置为SP

在QA环境中与客户IdP集成包括以下步骤:

  • 获取并存储从客户处收到的IdP元数据文件
  • 在环境上部署具有SP配置的代码
  • 使用
    /saml/metadata
    端点生成SP元数据文件,并与客户共享
  • 从客户IdP方面获得绿灯,表示SP元数据文件位于正确的位置
  • 验证SSO是否成功工作 现在,是在PROD环境上部署SP SSO配置并将其与客户端PROD IdP集成的时候了

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


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

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

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

    响应

    我假设您使用提供的Spring SAML“将应用程序配置为SP”。

    (2) 引用“在QA环境中与客户IdP集成涉及的后续步骤:…”

    响应

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

    通过回答最近的另一个Stackoverflow问题“”

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

    响应

    如果您“不喜欢将上述方法用于PROD”,您可以修改“spring security saml/samples/boot/simple service provider/”(由提供)的源代码,将您的web应用配置为saml SP。

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

    回答

    (一) 有关“如何运行身份提供商(IDP)和服务提供商(SP)的简单示例”(由提供)的自述将指导您“如何在PROD上部署SSO配置之前提前为我的应用程序生成SP元数据文件”

    (二) 我重点介绍了“在PROD上部署SSO配置之前,如何提前为我的web应用程序生成Spring Basic Security的SAML SP元数据文件”(引用您的问题)

    步骤2-启动服务提供商

    服务提供程序在上运行

    (II.a)启动web浏览器以访问URL 确保SpringSecuritySAML服务提供程序运行良好

    (II.b)启动web浏览器以访问SP元数据端点

    下载或“在PROD上部署SSO配置之前,提前为我的应用程序生成SP元数据文件”(引用您的问题)

    (5) 问题“Spring SAML:除了使用/SAML/metadata端点之外,还可以使用其他方法生成SP元数据”

    回答

    您可以将“spring security saml/samples/boot/simple service provider/src/main/java/sample/config/SecurityConfiguration.java”(由提供)的源代码修改为“除了使用/saml/SP/metadata endpoint之外还生成SP元数据”。

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


    您可以共享一些脚本或一些web资源吗?元数据在[]中是标准化的。对于SSO/SLO,您只需要定义“entityID”、“AssertionConsumerService”、“SingleLogoutService”和NameID格式。您只能选择使用所谓的“前端通道绑定”(HTTP POST、HTTP重定向)SP和IdP之间不需要直接通信。
    $git clone https://github.com/spring-projects/spring-security-saml
    
    $cd spring-security-saml
    
    $./gradlew :spring-security-saml-samples/boot/simple-service-provider:bootRun &
    
            public SamlSecurity(BeanConfig beanConfig, @Qualifier("appConfig") AppConfig appConfig) {
                super("/saml/sp/", beanConfig);
                this.appConfig = appConfig;
    }