我在Apache Tomcat 7.x上运行了一个Java / JEE Web App。假设它正在此URL上运行:
http://app.example.com:9080/app
我希望通过WebSEAL服务器(TAM for eBusiness 6.0)控制对此应用的访问。因此,我创建了一个透明路径联接/app
来访问应用程序。
所以,现在我可以通过WebSEAL URL访问它,如下所示:
https://secure.example.com/app
我还创建了一个充当传递的ACL,允许任何人使用上面的WebSEAL URL访问应用程序。身份验证由应用程序直接控制。所以,我不需要TAM来验证用户。
我的问题是,如何阻止用户直接通过此网址访问该应用:http://app.example.com:9080/app
?
我想知道我是否可以使用某种标识来告诉我请求是来自WebSEAL服务器还是直接来自应用程序URL。
我试图在WebSEAL Junction上启用这些选项:
在客户端标识标题下
User Name (Short)
User Name (Full DN)
User Groups List
User Credential
常规选项
Insert client IP header
Insert WebSEAL cookies
Preserve names of cookies
Add cookie path to cookie names
这些选项不会添加任何HTTP标头,除非用户通过TAM进行身份验证,这对我来说不是一个选项。如果可以,我可以创建一个WebFilter,它可以在Java应用程序中读取此标头,并在标头丢失时阻止请求。但是没有运气。
有什么建议吗?
答案 0 :(得分:1)
这个问题不一定要从webseal范围做出回应。
如果您只想拒绝其他服务器的连接,则在防火墙中您只能从WebSeal服务器的IP / DNS允许请求。或者你可以从tomcat做,见:
如果您希望在应用程序中验证请求应用程序的来源,您可以找到iv-cred
或iv-user
HTTP标头。这不是100%有效,也许有些人可以人为地把头。一个好主意是在iv-cred
中添加一些与时间戳混合的特定元素,以在您的应用程序中验证请求的来源和时间。参见:
https://www.ibm.com/developerworks/tivoli/tutorials/tz-tamauthapi/