【问题标题】:Java EE Security - Which method to use?Java EE 安全性 - 使用哪种方法?
【发布时间】:2011-03-25 23:07:49
【问题描述】:

在 Java EE 中实现安全性的最佳途径/方法是哪一种?(JPA/JSP)

我正在从事一个个人项目,因此我可以学习 Java EE,但我对如何在我的网站上处理 AUTHORIZATION 和 AUTHENTICATION 过程感到有些困惑。

我有不同的角色,我不希望某些用户访问网站的某些部分。所以我一直在搜索文档和教程等,但我找到的所有内容都可以追溯到 3-4 年前。有什么更新的我应该研究的吗?

以下是我发现的一些内容:

http://www.oracle.com/technetwork/developer-tools/jdev/oc4j-jaas-login-module-083975.html

任何帮助将不胜感激!!! :)

【问题讨论】:

    标签: java security authentication jakarta-ee authorization


    【解决方案1】:

    Spring Security。虽然它被标记为 Spring,you might find it useful for web applications;请注意,您无需编写 Spring 应用即可使用 Spring Security。

    如果您希望坚持使用 JAAS,我建议您在尝试编写自己的登录模块之前使用容器的登录模块之一,以开始使用。请注意,如果容器提供的模块不符合您的要求,您最终可能会编写一个。而且,有一个很好的book on JAAS可以帮助你详细了解。

    此外,请查看Servlet spec 3.0,了解如何使用注解在 servlet 本身中声明角色(@DeclareRoles,在 servlet 规范 2.5 中),然后再定义哪些角色可以访问哪些 HTTP 方法(使用@RolesAllowed)。您还可以使用 @DenyAll 和 @PermitAll 等注释来允许或禁止所有用户访问。 @TransportProtected 将确保通过 HTTPS 访问 HTTP 方法。需要做的就是将源代码中的这些角色映射到 JAAS 领域中的实际角色;这通常使用容器特定的描述符文件来完成。

    附录

    由于您使用 JSP 而不是 Facelets 或任何其他技术用于表示层,您可能对JSP tags offered by Spring Security 感兴趣。在一个庞大的 web.xml 文件中维护所有授权元数据要干净得多。

    就 JPA 而言,对它们的底层访问通常在 servlet 或 EJB 上强制执行。当然,您可以根据您的需要构建更多的编程安全性 - 使用实体侦听器将在此过程中有所帮助,因为您将能够拦截加载、更新和持久化操作(如果您是特定的,但在大多数情况下构建执行业务逻辑之前的安全性通常就足够了)。

    哦,看看JBoss Seam(和Seam 安全),因为它是一个基于Java EE 构建的完整应用程序开发框架。

    【讨论】:

      【解决方案2】:

      比 JAAS 更新的东西是 Spring Security 框架。它支持 JSR-350 (EJB 3),因此可以在 Java EE 中正常工作。

      【讨论】:

      • 我正在发现 Spring,它从未停止让我感到惊讶。好的,现在我必须阅读有关 Spring Security 的内容...
      【解决方案3】:

      我最近使用JAAS 开发了一个Java EE 应用程序。它是最新的,你可以检查它是home page at Oracle

      它适用于角色、身份验证等。

      您可以在JBossGlassfish 中使用它,也许其他的AS 也可以。

      【讨论】:

      【解决方案4】:

      Spring 安全教程https://www.packtpub.com/spring-security-3/book。强烈推荐。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-05-02
        • 2015-03-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多