寻找一个简单,安全的会话设计与servlet和JSP

时间:2009-11-19 17:50:44

标签: java security session servlets java-ee

我正在开发一个仅支持Intranet的Web应用程序(J2EE),它需要一些基本的安全功能。该网站的授权用户相对较少,但我仍需要实施某种安全会话。

我正在看的基本流程是访问网站=&gt;登录=&gt;使用site =&gt;完成后注销(或在浏览器关闭时自动注销)。没有什么花哨可言,甚至没有在登录时“记住我”选项的大多数认证工作已经完成 - 该网站是唯一通过https访问,我有存储的用户名和(加密)密码数据库<。 / p>

因此,一旦用户登录,实现安全会话的最简单的方法是什么(理想情况下,没有任何JBoss / JSP会在幕后做的cookie)? I.E.阻止用户直接请求登录屏幕以外的页面等。

只是检查会话中是否有某个“isUserAuthenticated”类似的值,检查我的servlet中所有传入请求的会话是否存在(例如request.getSession(false))?那么阻止用户获取JSP文件并强制他们为所有请求使用servlet呢?任何其他考虑因素(及其解决方案)?

1 个答案:

答案 0 :(得分:6)

听起来你可以使用简单的声明式安全方法。

查看Securing Web Applications的Java EE教程部分,特别是在declarative security部分

解决您的具体问题:

  

什么是最简单的......方式   实施安全会话? I.E.   直接阻止用户   请求登录之外的页面   屏幕等。

使用适当的安全角色在webapp描述符(web.xml)中声明您的URL。未经授权的用户将无法访问它们(尝试访问它们会带来登录页面。)

  

只是检查一下   一些人的会议   “isUserAuthenticated”般的价值,   检查会话是否存在(例如   request.getSession(false))为所有人   我的servlet中的传入请求?

所有这些都是完全没必要的; servlet容器将在幕后为您完成。

  

如何阻止用户   获取JSP文件并强制它们   对所有请求使用servlet?

只要JSP永远不需要公开访问(例如,您从servlet中转发它们;您永远不会重定向到JSP),您就可以在集合中声明它们的URL具有从未实际分配给用户的安全角色。