2008-09-23 66 views
4

我已经被赋予了实现登录处理程序的任务。处理程序捕获的唯一细节是用户名和密码。最初我将使用发布到servlet的JSP。 servlet执行数据库查找并验证用户凭证。成功登录后,您将被重定向,但不成功会将您带回到jsp并显示相应的错误消息。j_security_check和JAAS

然而,经过一番研究,我发现了j_security_check和JAAS,我不确定要使用哪种或者是否使用它。

我会从中获得哪些好处,哪些最适合我的任务? ?

回答

1

的简单的方法就足够了,除非你正在做真的真的敏感的东西。请记住最重要的(也是简单的)位:在数据库中保存密码散列,而不是真正的密码。

2

使用您的容器提供的内容,并且不执行数据库查找来执行此操作。当容器知道谁登录时,可以使用角色来限制对某些页面的访问。还有different types of authentication.

使用JAAS将使您能够灵活地使用另一种验证密码的方式(例如在活动目录中)。此外,还可以实施单点登录。

1

JAAS从您身上取走了负担,并允许您(或客户端)通过放入另一个模块来更改身份验证方法。例如从数据库认证到LDAP到Kerberos到NT域 - 你明白了。

7

安全是由以下几个方面:

  1. 认证
  2. 授权
  3. 传输层安全性 - 加密

验证: - 这包括检查用户的凭据;大部分时间都是通过登录机制来实现的。您创建登录页面的任务是验证的一部分。

授权: - 需要保护应用程序资源免受未经授权的访问,这意味着当用户请求受保护的资源时,应用程序需要确保用户具有适当的访问权限。这通常是通过为用户分配角色并放入验证用户访问权限的请求过滤器来完成的。这部分更重要,需要详细的设计分析。仅对用户进行身份验证是不够的,您需要确保受保护的资源不被未经授权的用户访问。

传输层安全性: - 系统架构需要确保通过网络传输的数据不会落入黑客或嗅探器手中。 SSL/TSL用于实现这一点。J2EE容器和Spring安全框架为每个安全方面提供了常用功能。

你正在努力开发的是简单的认证机制。当涉及访问控制,即授权时,应用程序安全性更受欢迎。

而且安全需要可扩展性,即根据业务需求整合系统和安全系统的变化应该能够适应东西像单点登录(SSO),LDAP认证等

虽然JAAS和容器的安全性对于缩放来说足够好,但是对于相同的限制也很少。例如,您需要依赖供应商特定的配置和适配器。您的应用程序会在部署描述符中声明安全需求,服务器管理员需要在服务器端配置安全领域。

我会推荐你​​评估Spring Security(以前的Acegi Security)框架。我们在许多项目中一直使用相同的方法,并发现其强大,可定制且易于实施。它带有一组拦截您的请求并提供访问控制的过滤器。 Framework可用于验证用户对各种用户存储库(如数据库,LADP服务器,OS安全等)的用户身份。它可扩展并可与SSO服务器集成。它还提供了有用的标签库来控制对JSP页面内部件的访问。 不仅该框架还提供了方法级别的安全性,可以通过Spring AOP框架在课堂级强加