道歉,如果标题有点不清楚 - 我不完全确定如何说出我正在寻找的内容。
基本上,我发现自己处于这种情况:
*
就我而言,这些都是不可变的要求 - 我必须在不违反任何上述限制的情况下使SSO工作。
考虑到所有这些,我认为我不能实现典型的SSO设置,因为这需要我能够SP -> IdP -> SP
,但我将无法执行SP -> IdP
步骤 - 我只能执行IdP -> SP
步骤。
现在,这里有解决方案。我见过mod_mellon
,mod_auth_saml
和mod_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可以通过网络访问我们的反向代理。我认为这是最近潜在客户的实际要求。