如何在 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 身份验证