这个问题可能听起来很奇怪,但我的情况最糟糕。
我的应用服务器位于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以从路径/secure
获取属性。
如果有人设法创建虚假的http-apache-server(比如fake-http-server
),那也指向app-server
。所以这里fake-http-server
可以直接访问/secure
路径,该服务器可以手动发送类似shibboleth的属性,并且可以在没有保护的情况下登录系统。
我的问题是, 在Shibboleth中是否有一个机制可以检查我的应用程序中的shibboleth会话 - 不仅仅是在http层 。
答案 0 :(得分:1)
mod_shib Apache模块默认设置环境变量。代理Apache服务器不能欺骗这些变量。
来自docs:
最安全的机制,以及允许它的服务器的默认设置, 是使用环境变量。这个词有点泛泛 因为环境变量不一定总是暗示着 传统意义上的实际过程环境,因为有 通常没有单独的过程。它实际上是指一组受控制的 Web服务器提供给应用程序的数据元素 不能以任何方式从Web服务器外部操纵。 具体来说,客户没有发言权。
如果您不信任Apache Web服务器,则可以解析代码中的SAML断言,并使用身份提供程序(IdP)提供的证书进行SAML断言来验证断言中的签名。但是检查签名很困难,您需要处理密钥轮换以及如何处理IdP使用的新证书等情况。 Shibboleth为您处理这些非常困难和重要的任务。