1

这个问题可能听起来很奇怪,但我有一个最坏的情况。

我的应用程序服务器在http://10.10.10.10/app上(说出来app-server),http-apache 服务器在http://some.dns.com/app上(说出来http-server)。两者都是不同的系统服务器。

我知道app-server不应该直接公开访问,但让我们假设它是公开访问的。现在Shibboleth安装在http-server安全路径http://some.dns.com/app/secure上。而一个 servlet 被映射为从 path 获取属性/secure

如果有人设法创建假的 http-apache-server (比如fake-http-server),那也指向app-server. 所以这里fake-http-server可以直接访问/secure路径,并且该服务器可以手动发送类似shibboleth的属性,并且可以在没有保护的情况下登录系统。

我的问题是,Shibboleth 中是否有一种机制,我可以在我的应用程序中检查 shibboleth 会话 - 不仅在 http 层中。

4

1 回答 1

1

mod_shib Apache 模块默认设置环境变量。这些变量不能被代理 Apache 服务器欺骗。

文档

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

如果您不信任 Apache 网络服务器,您可以解析代码中的 SAML 断言,并使用生成 SAML 断言的身份提供者 (IdP) 提供的证书验证断言中的签名。但是检查签名很困难,您需要处理密钥轮换以及如何处理 IdP 使用的新证书等情况。Shibboleth 为您处理这些非常困难和重要的任务。

于 2015-06-08T20:21:47.990 回答