【问题标题】:Shibboleth Session Validation In TomcatTomcat 中的 Shibboleth 会话验证
【发布时间】:2015-08-04 20:16:27
【问题描述】:

我有一个 Apache/2.2.15 Web 服务器,其中包含 mod_shib、mod_ssl 和 mod_jk 模块。我有一个虚拟主机,它配置了 AuthType Shibboleth、SSLCertificates 和 JKMount,以便在使用正确的 IDP 成功建立会话后使用 AJP 将请求定向到我的 Tomcat 8 服务器。当我的 http 请求到达我的应用服务器时,我可以看到各种 Shib-* 标头,以及我的 SP 从 IDP 请求的属性。

我的应用服务器是否可以验证 shibsession cookie 或其他标头?我试图防止我的驻留在 DMZ 中的 Web 服务器以某种方式受到损害,并且攻击者向驻留在内部区域中的我的应用服务器发出请求。

有没有一种方法可以验证标头中可用内容的签名,以确保内容确实来自 IDP,并且不是由控制我的 Web 服务器的攻击者制造的?

OpenSAML 库中有什么东西可以用来实现这一点吗?

【问题讨论】:

    标签: apache tomcat saml shibboleth


    【解决方案1】:

    我的应用服务器是否可以验证 shibsession cookie 或其他标头?

    mod_shib 已经为您完成了这项艰巨的工作。在验证来自身份提供者 (IdP) 的信息返回后,mod_shib 然后设置环境变量(客户端无法设置)以供您的应用程序读取和信任。在您的应用程序中实现 OpenSAML 是不必要的,因为 mod_shib 已经为您完成了验证工作。

    来自docs:

    最安全的机制,以及允许它的服务器的默认设置, 是环境变量的使用。这个词有点笼统 因为环境变量不一定总是暗示 传统意义上的实际过程环境,因为有 通常没有单独的过程。它实际上是指一组受控的 Web 服务器提供给应用程序的数据元素以及 无法从 Web 服务器外部以任何方式进行操作。 具体来说,客户对他们没有发言权。

    【讨论】:

    • 谢谢,我知道 mod_shib 会这样做,但即使根据您提供的附加证据“......不能从 Web 服务器外部以任何方式进行操作” 我关心的攻击向量是如果网络服务器本身受到损害!在我的场景中,我计划放置 mod_shib 的 Web 服务器位于 DMZ 中,而在更安全的内部区域中的应用服务器通过 acls 等进一步被防火墙隔离。但是,我在 Shibboleth 中寻找可以进一步改进的东西利用在应用服务器和 Web 服务器之间或应用服务器和 idp 之间建立信任。
    • 您想要分解 SAML 断言并查看可信服务器上的信息是否真实。如果您不信任 Web 服务器,请不要在该服务器上使用 mod_shib。在受信任的服务器上使用 mod_shib 或在您的应用程序中直接使用 OpenSAML 使用您自己的 SAML。
    • 再次感谢您。现在表格上的选项是 1) 按照您的建议将运行 mod_shib 的 Web 服务器移动到与应用服务器相同的区域 2) 让 IDP 发送一个已签名的属性,我的应用服务器可以验证该属性。一般来说,选项 2 很难实现,但由于我的 IDP 列表很小,而且我可以轻松影响他们,所以这是可能的。就我而言,直接使用 OpenSAML 似乎更困难,而且更容易出错,以使其正确。再次感谢您。
    • 是的,验证签名是一项艰巨的工作,尤其是当您收到来自 Shibboleth、simpleSaml 和 ADFS 等各种 IdP 的断言时。每个断言都会有所不同。如果 IdP 软件是一致的,这将减少工作量。还有一些可靠的库,比如 spring-security-saml。
    猜你喜欢
    • 2016-01-08
    • 2015-01-22
    • 1970-01-01
    • 2016-10-29
    • 2014-09-29
    • 2015-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多