【问题标题】:Configuring Ping Federate and Spring SAML to authenticate application配置 Ping Federate 和 Spring SAML 以验证应用程序
【发布时间】:2014-06-24 17:32:17
【问题描述】:

我在运行 Windows_Server-2008-R2_SP1-English-64Bit-Base-2014.04.09 的 AWS EC2 上安装了 PingFederate。我有一个使用 Spring Security 进行身份验证的 Java 应用程序。

我已了解如何使用 PingFederate,我可以设置身份提供者 (IdP) 和服务提供者 (SP)。我已经收集到 IdP 将是应用程序用户提供登录凭据(身份)并将其传递给 SP,在此页面上的此图中,目标应用程序与 SP 分开:

http://documentation.pingidentity.com/display/PF66/Service+Providers+and+Identity+Providers

此图还显示了 IdP 和 SP 两侧的联合身份软件。

我已经使用本地 PingFederate 服务器创建了 IdP 和 SP,只是为了查看配置选项是什么,但我对其中的哪些部分实际上需要能够为我的 Spring Security 应用程序提供 SSO 感到困惑。

我的问题是:

  1. 我是否需要 IdP 和 SP 来实现我正在尝试做的事情。

  2. 现在我们的用户名和密码存储在 SQL Server 中,我是否可以利用 PingFederate 来验证用户身份?

  3. 我是否应该为此使用 Spring Security SAML,或者其他路线更合适?

感谢您的帮助,我已经联系了 PingFederate,但我的区域解决方案架构师恰好要到周五才上班。

如果我的想法完全偏离了我也很抱歉,我正在努力思考需要什么。

【问题讨论】:

  • “生产”实例是否将位于同一个域(即 domain.com)中? Spring Security 应用程序是否在代理(IIS 或 Apache)后面?还是直奔春天?
  • Spring Security 应用程序位于带有 pubnat 的 AWS VPC 内(如果它算作代理)。这能回答你的问题吗?

标签: saml saml-2.0 federated-identity pingfederate spring-saml


【解决方案1】:

假设您的目标是在 Ping 和您的应用程序之间建立联合(以便例如外部化身份验证或启用单点登录),您的想法是正确的。

Ping Federate 用作身份提供程序 (IDP),您可以将其配置为连接到您的 SQL 服务器,以便它可以从那里验证您现有的用户。 IDP 与称为服务提供者 (SP) 的其他应用程序通信。

为了连接到 Ping,您的应用程序需要能够充当 SAML 2.0 服务提供者,而使用 Spring SAML 是实现此目的的一种非常好的方法。

SP 和 IDP 之间单点登录的典型数据流类似于:

  1. 用户访问需要身份验证的 SP 应用程序
  2. SP 创建一个 AuthenticationRequest 并将其发送给 IDP(在用户浏览器中使用重定向)
  3. IDP 处理请求并对用户进行身份验证
  4. IDP 使用 AuthenticationResponse 消息回复 SP
  5. SP 处理响应并根据包含的数据为用户创建会话

【讨论】:

    【解决方案2】:

    假设您的 Spring 应用程序和 PingFederate 之间需要 SAML。这取决于它的部署方式以及您是否是正确的(请参阅 Andy K 后续问题)。您应该查看 OpenToken Integration Kit for Java 或 Ping 的 ReferenceID Int Kit 作为可能的解决方案。与尝试将另一个可能不需要的 SAML 解决方案组合在一起相比,集成要简单得多。但是,我建议与您的 RSA 交谈,他们可以为您提供适合您场景的最佳方法。

    【讨论】:

    • 我只决定使用 SAML,因为在这篇文章之后,我需要通过 SAML 对 Tableau 服务器进行身份验证。就像我在回复 Andy K 时所说的那样,我正在使用 AWS Elastic Beanstalk 将其部署到位于 AWS VPC 中的 Apache Tomcat 服务器。我将尝试使用 OpenToken Integration Kit for Java,因为您说它集成起来要简单得多。通过这种方式,我是否需要使用 Spring Security 或 PingFederate 来保护站点?非常感谢。 @伊恩
    • 如果您需要使用 Spring Security,我会感到惊讶。但是,您的 RSA 可以与您一起深入挖掘,以根据您的应用程序在 Tomcat 中的部署方式找出正确的方法。 HTH
    • 我的应用程序被配置为使用 Spring Security Roles 来保护功能并根据用户角色允许的情况在我的 JSP 中动态显示/隐藏段。抱歉,我不确定您所说的我的 RSA 是什么?这会是 Ping Federate 吗?我刚收到一封来自 Ping Support 的电子邮件,解释了我想要完成的工作,它说如果我使用 java 工具包,我将不再需要 Spring。我仍将使用 Spring Framework 来实现其他功能,例如 RequestMappings 的注释,但我不确定我将如何像以前一样使用这些角色。 @vschafer
    • 抱歉,我意识到我的支持联系人的头衔是区域解决方案架构师 (RSA)。我这个星期一才刚开始,他整个星期都在外面,所以这就是为什么我在这里发帖以更好地了解我需要做什么来完成这个解决方案。在向他们的通用支持地址发送电子邮件后,我得到了解决方案支持工程师的建议,我将根据他的建议研究集成工具包。非常感谢您的帮助。 @vschafer
    猜你喜欢
    • 2015-02-22
    • 2019-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-21
    • 2011-01-03
    • 2011-09-30
    相关资源
    最近更新 更多