【问题标题】:Configuring Spring SAML for SSO with PingFederate使用 PingFederate 为 SSO 配置 Spring SAML
【发布时间】:2014-06-25 00:13:49
【问题描述】:

我们决定使用 Ping Federate 作为我们的 SSO 解决方案。我搜索了许多示例,但没有找到清楚描述我需要如何在 PingFederate 端设置我的 SP 和/或 IdP 的弹簧配置。我还没有找到一个 Spring 文档来描述我需要什么来实现它。

任何帮助,非常感谢。

【问题讨论】:

    标签: single-sign-on saml saml-2.0 pingfederate spring-saml


    【解决方案1】:

    目前没有关于在 Spring SAML 和 Ping 之间建立联合的分步指南,但步骤与 Spring SAML 的quick start guide 中描述的非常相似。

    最好的方法是从 Spring SAML 中包含的示例应用程序开始,将其配置为使用 Ping,然后将配置传输到您当前的 Spring 应用程序。

    高级步骤是:

    • 部署 Spring SAML 示例应用程序
    • https://server:port/context/saml/metadata 下载其 SP 元数据(只需打开浏览器到该 URL 并存储它返回的所有内容)
    • 通过创建新的“SP 连接”来配置 Ping,作为导入之前存储的元数据的过程的一部分,首先您可以在大多数设置中使用默认值
    • 完成后,使用管理功能从 Ping 导出 IDP 元数据 -> 为您在上一步中创建的连接导出元数据
    • 将 IDP 元数据导入您的 Spring SAML(示例在手册中)

    这会在两者之间建立联盟,并使您能够开始通过 Ping 验证您的用户。

    元数据配置(bean 元数据)在您的情况下应如下所示:

    <bean id="metadata" class="org.springframework.security.saml.metadata.CachingMetadataManager">
        <constructor-arg>
            <list>
                <bean class="org.springframework.security.saml.metadata.ExtendedMetadataDelegate">
                    <constructor-arg>
                        <bean class="org.opensaml.saml2.metadata.provider.FilesystemMetadataProvider">
                            <constructor-arg>
                                <value type="java.io.File">classpath:security/idp.xml</value>
                            </constructor-arg>
                            <property name="parserPool" ref="parserPool"/>
                        </bean>
                    </constructor-arg>
                    <constructor-arg>
                        <bean class="org.springframework.security.saml.metadata.ExtendedMetadata"/>
                    </constructor-arg>
                    <property name="metadataTrustCheck" value="false"/>
                </bean>
            </list>
        </constructor-arg>
    </bean>
    

    确保将 resources/security/idp.xml 替换为 PF 中的元数据。您可以删除所有未使用的 ExtendedMetadata bean 实例(如 SSO Circle 的实例)。元数据 bean 可以包含多个“链接”的原因是它可以同时支持多个 IDP。

    【讨论】:

    • 最简单的方法是从repo.spring.io/list/snapshot/org/springframework/security/… 获取最新的 dist.zip 版本,它包含可以与 maven 一起使用的示例应用程序,不需要 gradle。您是否按照说明包含了 SSO 圈的元数据,或者您是否尝试过使用 Ping 的元数据?
    • 是的。包含此部分的系统是否抱怨“未配置 IDP”?
    • 是的,你会使用这样的东西: classpath:security/idp.xml
    • 元数据包含有关如何到达 PF 的信息(它是一组包含所有主机、端口等的 URL)。将元数据导入 SP(= 您的应用程序)告诉它如何与 PF 通信。通常,IDP 和 SP 之间的通信是通过用户的 Web 浏览器完成的(使用 HTTP 参数和重定向),因此您不需要启用 IDP 和 SP 之间的直接连接,只要用户的浏览器可以同时访问就足够了。
    • cmets 空间不大,我已更新原始答案以解决您的问题。使用属性 metadataTrustCheck=false 可以避免“签名信任建立”错误,见上文。
    猜你喜欢
    • 2014-08-21
    • 1970-01-01
    • 2015-04-19
    • 1970-01-01
    • 1970-01-01
    • 2015-02-22
    • 1970-01-01
    • 2015-01-23
    • 1970-01-01
    相关资源
    最近更新 更多