j_security_check和JAAS

时间:2008-09-23 08:51:47

标签: java security j-security-check

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

然而,在进行一些研究后,我发现了j_security_check和JAAS,并且不确定使用哪个或是否使用。

我从哪个方面获得哪些好处,哪个最适合我的任务? ?

5 个答案:

答案 0 :(得分:7)

安全性包括以下几个方面:

  1. 验证
  2. 授权
  3. 传输层安全性 - 加密
  4. 身份验证: - 这包括检查用户的凭据;大多数情况下,这是通过登录机制实现的。您创建登录页面的任务是身份验证的一部分。

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

    传输层安全性: - 系统架构需要确保通过网络传输的数据不会落入黑客或嗅探器的手中。 SSL / TSL用于实现此目的

    Spring容器和框架(如Spring安全性)为每个安全方面提供了通用功能。

    您要开发的是简单的身份验证机制。在访问控制即授权方面,应用程序安全性更受欢迎。

    安全性也需要可扩展,即随着业务需求的变化,集成系统和安全性,您的系统应该能够适应单点登录(SSO),LDAP身份验证等。

    虽然JAAS和容器安全性足以进行扩展,但同样的限制很少。例如,您需要依赖供应商特定的配置和适配器。您的应用程序将在部署描述符中声明安全需求,服务器管理员需要在服务器端配置安全域。

    我建议你评估Spring Security(以前的Acegi Security)框架。我们在许多项目中都使用了相同的功能,并且发现它功能强大,可定制且易于实现。它带有一组过滤器,可拦截您的请求并提供访问控制。框架可用于针对各种用户存储库验证用户,例如数据库,LADP服务器,操作系统安全性等。它是可扩展的,可以与SSO服务器集成。它还提供了有用的标记库,用于控制对JSP页面内部件的访问。 不仅如此,该框架还提供了可以通过Spring AOP框架在类级别强加的方法级安全性

答案 1 :(得分:2)

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

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

答案 2 :(得分:1)

除非您正在执行真正 敏感的内容,否则更简单的方法就足够了。只需记住最重要的(也是简单的)位:在数据库中保留密码哈希值,而不是真正的密码。

答案 3 :(得分:1)

您也可以查看Spring Security框架。

答案 4 :(得分:1)

JAAS会减轻您的负担,并允许您(或客户端)仅通过放入另一个模块来更改身份验证方法。例如,从DB auth到LDAP再到Kerberos到NT Domain - 你明白了。