【问题标题】:Java Security FrameworkJava 安全框架
【发布时间】:2009-02-12 08:46:03
【问题描述】:

在新项目中,安全性总是排在最后。或者您使用像 Spring 这样的框架,其中安全性已经内置并且可以轻松打开。 我试图找到一个开放的安全框架,它可以插入到 Swing 和 Web 应用程序(以及 JavaFX?),也许很容易理解。我查看了普通的 JAAS、JGuard 和 JSecurity,但它太复杂了,无法入门。 有什么建议或经验可以分享吗? 我正在使用 NB、Glassfish 和 MySQL。 谢谢 斯文

【问题讨论】:

  • 将标签从 jee5 更改为 javaee,因为您不应该将自己限制在最新版本!

标签: security frameworks jakarta-ee glassfish jaas


【解决方案1】:

我刚刚看过这个http://shiro.apache.org/

Apache Shiro 是一个强大且 易于使用的 Java 安全框架 执行身份验证, 授权、密码学和 会话管理。与士郎 易于理解的 API,您可以 快速轻松地保护任何 应用程序——从最小的手机 应用到最大的网络和 企业应用程序。

【讨论】:

    【解决方案2】:

    我强烈推荐学习JAAS。真的不难上手,Sun 网站上有一些有用的tutorialsreference guide

    根据我的经验,JAAS 的使用非常广泛,所以一旦你学会了它,你绝对可以重复使用它。它也恰好是Glassfish 身份验证机制的构建块之一!

    【讨论】:

      【解决方案3】:

      我在 JAAS 中针对 Web 应用程序进行了类似的研究,但遇到了“思维障碍”,直到我最终意识到 JAAS 是一个在与 Java 世界中的传统 Web 应用程序不同的“层”解决安全性的框架。它是为解决 J2SE 而不是 J2EE 中的安全问题而构建的。

      JAAS 是一个安全框架,用于在比 Web 应用程序低得多的级别保护事物。其中一些例子是 JVM 级别可用的代码和资源,因此所有这些都可以在 JVM 级别设置策略文件。

      但是,由于 J2EE 构建在 J2SE 之上,因此来自 JAAS 的一些模块在 J2EE 安全性中被重用,例如 LoginModules 和 Callbacks。

      另一方面,Acegi(又名 Spring Security)解决了 Web 应用程序安全问题中更高的“层”。它建立在 J2EE 安全性之上,因此建立在 J2SE 之上,因此建立在 JAAS 之上。除非您希望保护 J2SE 级别的资源(类、系统资源),否则除了使用公共类和接口之外,我看不到 JAAS 的任何实际用途。只需专注于使用 Acegi 或普通的旧 J2EE 安全性即可解决许多常见的 Web 应用程序安全问题。

      归根结底,重要的是要了解您正在处理 J2EE-J2SE 安全问题的哪个“层”,并为该问题选择编写工具。

      【讨论】:

      • 在查看选项一段时间后,我相信 JSecurity(现在称为 Ki (incubator.apache.org/ki) 是一个不错的选择。仍在开发中,但到目前为止我测试的结果看起来很有希望。
      • ki 现在被称为 shiro,只是给结果者的注释
      【解决方案4】:

      我建议您看看 OACC (http://oaccframework.org)。 OACC 是为解决应用程序安全问题而设计的。与大多数框架不同,OACC 能够在您的应用程序中存储/管理授权关系。 OACC 的授权模型比 Shiro 或 Spring Security 更强大。

      【讨论】:

        【解决方案5】:

        JBoss 提供了替代方案。 PicketBox 的新版本。更多信息在这里: https://docs.jboss.org/author/display/SECURITY/Java+Application+Security

        【讨论】:

          【解决方案6】:

          当您在 JBoss 下对 Web 应用程序施加压力时,apache shiro 会惨遭失败(比如 200 万个简单 GET 请求,并发 50 个线程)。 发现这一点非常令人失望。 当您使用过滤器时会发生这种情况。

          【讨论】:

          • 这在没有进一步证据的情况下是没有根据的。我在每秒处理数十万个请求的关键任务 Web 应用程序中使用了 Shiro。有些网络项目使用 Shiro 来保护每天处理数亿个请求的网络端点。我怀疑您位于 Shiro 背后的内部架构或数据存储引起了问题。我可以根据非常真实的经验向您保证,Shiro 可以很好地扩展。
          【解决方案7】:

          您可以阅读http://code4reference.com/2013/08/guest-posttop-java-security-frameworks-for-developing-defensive-java-applications/

          它提供了从各种 Java 安全框架(如 JAAS、Shiro 或 Spring Security)的 1000 英里视图。一切都取决于您的要求和您选择的技术堆栈

          【讨论】:

            猜你喜欢
            • 2011-09-08
            • 2011-02-08
            • 2012-04-05
            • 2011-07-03
            • 2018-11-04
            • 1970-01-01
            • 1970-01-01
            • 2015-08-22
            • 2011-10-14
            相关资源
            最近更新 更多