Apache作为SSO IdP和反向代理?

时间:2012-10-09 06:42:52

标签: apache single-sign-on saml

道歉,如果标题有点不清楚 - 我不完全确定如何说出我正在寻找的内容。

基本上,我发现自己处于这种情况:

  • 我有几个(3 +)个网络应用程序
  • 每个应用程序都驻留在单独的服务器上
  • 用户无法单独访问每个应用程序 - 他们都坐在Apache后面,充当反向代理
  • Apache又在另一台服务器上
  • 应用程序无法直接访问反向代理或其他
  • Web应用程序都是基于Java的,在Tomcat或Glassfish或类似的东西中运行。
  • 我想在所有应用程序中启用SSO
  • 如果有IdP(例如OpenAM,Shibboleth),我将无法直接从任何Web应用程序访问它。 *

就我而言,这些都是不可变的要求 - 我必须在不违反任何上述限制的情况下使SSO工作。

考虑到所有这些,我认为我不能实现典型的SSO设置,因为这需要我能够SP -> IdP -> SP,但我将无法执行SP -> IdP步骤 - 我只能执行IdP -> SP步骤。

现在,这里有解决方案。我见过mod_mellonmod_auth_samlmod_shib,它们都支持Apache中的SAML,我知道至少mod_mellon将通过SAML身份验证的结果HTTP请求的标头。所以这基本上解决了我的问题,但对于我将在一分钟内完成的一些事情。

我最终会喜欢与此类似的东西,除了Apache会执行身份验证并通过身份验证的结果发送到Web应用程序。

因此,流程将类似于:

Request -> Not Authenticated -> Redirect to Login Page -> Authenticate (e.g. via LDAP) -> Add results to headers -> Redirect to requested page,一切都没有离开Apache。

这与典型的SSO提供程序完全相同,只是Apache基本上充当IdP和反向代理,并且通过将结果包含在标头中,它通知SP认证成功。使用单独的IdP可能更简单,但如果可能的话,我想避免开销。

最后,无论我使用Apache plus IdP,还是将Apache 作为 IdP,我都需要能够保护添加到标题中的内容,例如签下他们。

虽然挂了一秒钟 - 如果我想签署这些内容,也许我应该只包含一个SAML令牌,因为SAML标准(和库)负责处理......

最后一个问题,然后:是否可以让Apache充当SP,调用IdP,然后将SAML令牌转发到反向代理后面的应用程序?进一步阅读时,似乎ECP或“增强的客户端或代理配置文件”可能允许此操作。它不适用于这个用例(它实际上是用于,例如WAP代理),但它可能允许我做我想要的。 SAML标准是否允许SP以外的其他内容发起登录请求?确实如此,并且称为IdP-Initiated SSO我相信这个问题的第一部分仍然是相关的。

我真的很感激任何人的任何建议或意见(甚至“你想做什么样的WTF?!”评论表示赞赏)。

*我应该注意到,在这种情况下,我们可以控制所有谜题,但出于安全原因,我们可能会被要求允许客户“用户通过他们的SSO基础设施登录我们的应用程序,但我们没有网络访问他们的IdP。但是,他们的IdP可以通过网络访问我们的反向代理。我认为这是最近潜在客户的实际要求。

0 个答案:

没有答案