如何在 Spring Security SAML 示例中配置 IDP 元数据和 SP 元数据?

Posted

技术标签:

【中文标题】如何在 Spring Security SAML 示例中配置 IDP 元数据和 SP 元数据?【英文标题】:How to configuration of IDP metadata and SP metadata in Spring Security SAML sample? 【发布时间】:2015-04-09 10:09:36 【问题描述】:

我想处理 Spring Security SAML。为此,我开始探索Spring Security SAML。一开始,我在SSOCircle 创建了一个帐户。比我配置 IDP 元数据和生成 SP 元数据(4.2.2 和 4.2.3)。在entityId我设置:

 <bean id="metadataGeneratorFilter" class="org.springframework.security.saml.metadata.MetadataGeneratorFilter">
    <constructor-arg>
        <bean class="org.springframework.security.saml.metadata.MetadataGenerator">
            <property name="entityId" value="http://idp.ssocircle.com"/>
        </bean>
    </constructor-arg>
 </bean>

当我开始申请时,我有:

Error occurred:
Reason: Unable to do Single Sign On or Federation.

Error occurred:
Reason: Unable to get AuthnRequest.

如何配置 Spring Security SAML?

【问题讨论】:

嗨,我不了解你。但要与您澄清的一件事是关于 SAML 与 Spring Security 的集成。您是否进行过 SAML 集成?因为我坚持了 5 天。我有两个门户网站,我想将它们集成到 SAML,即单点登录。我正在使用弹簧 mvc 。我想用 spring security 获得 saml 。你能告诉我这件事吗?提前致谢 @Mehbub,不幸的是,我没有好消息。我也不懂 Spring Security SAML。 ops :(如果你有任何信息请告诉我 【参考方案1】:

按照QuickStart 章节中的步骤操作。需要注意的一些差异:

    注册http://www.ssocircle.com/。您需要验证您的电子邮件地址。

    sample/src/main/webapp/WEB-INF/securityContext.xml 的 metadataGeneratorFilter 部分应如下所示(注意: signMetadata 属性已被注释掉):

    <bean id="metadataGeneratorFilter" class="org.springframework.security.saml.metadata.MetadataGeneratorFilter">
    <constructor-arg>
        <bean class="org.springframework.security.saml.metadata.MetadataGenerator">
          <property name="entityId" value="urn:test:YourName:YourCity"/>
      <!--<property name="signMetadata" value="false"/>-->
        </bean>
    </constructor-arg>
    

    在本地构建和启动 Web 服务器。然后在http://localhost:8080/spring-security-saml2-sample/saml/metadata 下载元数据。将内容复制到剪贴板。 在https://idp.ssocircle.com/sso/hos/ManageSPMetadata.jsp 更新您的新个人资料的元数据。 将服务的 FQDN 输入为“urn:test:YourName:YourCity”。您需要为您的姓名和您的城市输入唯一值。从上方粘贴元数据。 测试:
      退出单点登录圈服务。 转到http://localhost:8080/spring-security-saml2-sample 您应该被重定向到 SSO Circle 登录。 使用您的 SSO Circle 凭据登录。 您应该被重定向到您的本地服务提供商页面并进行身份验证。

【讨论】:

谢谢哥们。我不知道我刚刚做了什么,但它至少似乎有效,与其他 SAML“解决方案”相比,这是一个进步。 我不明白用什么来代替它? "urn:test:YourName:YourCity"【参考方案2】:

元数据生成器过滤器为您的应用程序(服务提供商)生成元数据。您提供的实体 ID (http://idp.ssocircle.com) 已被 SSO 圈使用,您应该创建一个描述您的应用程序的唯一值,例如瓮:测试:赫尔辛基:myapp

就像说明书上说的:

确保将 entityId 值替换为唯一的字符串 在 SSO Circle 服务中(例如 urn:test:yourname:yourcity)

【讨论】:

好的。例如,我将entityId 更改为urn:test:helsinki:myapp。但是现在,当我启动应用程序时,出现错误Reason: The SAML Request is invalid.。可能是这个entityId 我应该粘贴到ssocircle.com/en 的某个字段? 在执行 entityID 更改后,您是否已将应用程序的元数据导出到 SSO Circle?请按照手册中的说明逐步操作。 我按照以下步骤操作: 1. 更改metadata bean 2. 更改metadataGeneratorFilter 并将entytiId 设置为urn:test:helsinki:myapp 3. 启动应用程序。但每次我有错误:Reason: The SAML Request is invalid.。因此,我无法获取元数据信息。 所以你在部署过程中遇到错误?或者当你打开应用程序 URL 时?或者当您单击登录链接时?请附上您的 Spring 配置 XML。 @VladimírSchäfer,我已经阅读了有关元数据和 metadataGeneratorFilter bean 更改的文档,但是能够构建 saml-spring 示例,将其部署到 Tomcat 8 并且开箱即用我没有配置更改。当然,我确实在 ssocircle.com 上创建了一个帐户,但除此之外它还有效。示例应用程序是否进行了更改以允许这样做,并且文档是否仍与示例应用程序的当前版本同步?谢谢

以上是关于如何在 Spring Security SAML 示例中配置 IDP 元数据和 SP 元数据?的主要内容,如果未能解决你的问题,请参考以下文章

spring-security saml2:如何获取当前用户?

如何配置 Spring Security SAML 以与 Okta 一起使用?

如何使用 Spring Security SAML 配置远程发现?

如何在同一应用程序中使用 spring-sample 示例配置 Spring Security 基本身份验证和 SAML 身份验证

如何在 Spring Security SAML 示例中配置 IDP 元数据和 SP 元数据?

Spring security SAML IDP 发起的 SSO