Sun Java System Application Server Enterprise Edition 8.2 添加了对 Sun Java System Application Server Enterprise Edition 7.1 附带的 auth-passthrough 插件函数所提供功能的支持。但是,在 Application Server Enterprise Edition 8.2 中,auth-passthrough 插件功能的配置有所不同。
Application Server Enterprise Edition 7.1 中的 auth-passthrough 插件功能已经在两层部署方案中带来很大帮助,并附带如下约束条件:
Application Server 实例受公司防火墙之后的第二层防火墙的保护。
不允许客户机直接连接到 Application Server 实例。
在这种网络体系架构中,客户机连接到前端 Web 服务器,而该 Web 服务器配置有 service-passthrough 插件功能,会将 HTTP 请求转发到代理的 Application Server 实例以供处理。Application Server 只能从 Web 服务器代理接收请求,而决不会从任何客户机主机接收请求。因此,当部署在代理的 Application Server 实例上的任何应用程序查询客户机信息时,该应用程序将收到代理主机的信息(例如,当该应用程序查询客户机 IP 地址时,会收到代理主机的 IP),这是因为代理主机才是中继请求的真正发出主机。
在 Application Server Enterprise Edition 7.1 中,auth-passthrough 插件功能可在代理的 Application Server 实例上配置,以便使远程客户机信息能够直接提供给该实例上部署的任何应用程序,就像代理的 Application Server 实例直接接收了请求,而不是通过运行 service-passthrough 插件的中间 Web 服务器接收请求。
在 Application Server Enterprise Edition 8.2 中,可以通过将 domain.xml 中 <http-service> 元素的 authPassthroughEnabled 属性设置为 TRUE 来启用 auth-passthrough 功能,如下所示:
<property name="authPassthroughEnabled" value="true"/> |
Application Server Enterprise Edition 7.1 中 auth-passthrough 插件功能的安全注意事项也同样适用于 Application Server Enterprise Edition 8.2 中的 authPassthroughEnabled 属性。这是由于 authPassthroughEnabled 可以启用信息重写,而信息重写可用于验证目的(例如发起请求的 IP 地址或 SSL 客户机证书)。因此,只应允许可信赖客户机或服务器连接到 Application Server Enterprise Edition 8.2 实例(通过将 authPassthroughEnabled 设置为 TRUE)。为防万一,应该只将企业防火墙后的服务器的 authPassthroughEnabled 设置为 TRUE。而不要将可通过 Internet 访问的服务器的 authPassthroughEnabled 设置为 TRUE。
请注意,当代理 Web 服务器已配置了 service-passthrough 插件并且将请求转发到将 authPassthroughEnabled 设置为 TRUE 的 Application Server 8.1 Update 2 实例时,Web 服务器代理上可能启用了 SSL 客户机验证,而在代理的 Application Server 8.1 Update 2 实例上却禁用了该验证。在这种情况下,代理的 Application Server 8.1 Update 2 仍会将请求当作通过了 SSL 验证,并向部署在其上的发出请求的所有应用程序提供客户机 SSL 证书。