我正在开发一个仅支持Intranet的Web应用程序(J2EE),它需要一些基本的安全功能。该网站的授权用户相对较少,但我仍需要实施某种安全会话。
我正在看的基本流程是访问网站=&gt;登录=&gt;使用site =&gt;完成后注销(或在浏览器关闭时自动注销)。没有什么花哨可言,甚至没有在登录时“记住我”选项的大多数认证工作已经完成 - 该网站是唯一通过https访问,我有存储的用户名和(加密)密码数据库<。 / p>
因此,一旦用户登录,实现安全会话的最简单的方法是什么(理想情况下,没有任何JBoss / JSP会在幕后做的cookie)? I.E.阻止用户直接请求登录屏幕以外的页面等。
只是检查会话中是否有某个“isUserAuthenticated”类似的值,检查我的servlet中所有传入请求的会话是否存在(例如request.getSession(false)
)?那么阻止用户获取JSP文件并强制他们为所有请求使用servlet呢?任何其他考虑因素(及其解决方案)?
答案 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具有从未实际分配给用户的安全角色。