代码之家  ›  专栏  ›  技术社区  ›  Dan

人类的JAAS

  •  76
  • Dan  · 技术社区  · 15 年前

    我很难理解JAAS。这一切似乎比它应该的更复杂(特别是太阳教程)。我需要一个简单的教程或示例,说明如何在Struts + Spring + Hibernate与自定义用户库的基础上实现Java应用程序中的安全性(认证+授权)。可以使用Acegi实现。

    6 回复  |  直到 7 年前
        2
  •  51
  •   rscarter    10 年前

    其他用户在上面提供了一些非常有用的链接,所以我不想再为这些链接操心了。我在JAAS中对Web应用进行了类似的研究,并且已经进入了“思想障碍”,直到我终于意识到JAAS是一个在不同的“层”上处理安全性的框架,然后是Java世界中的Web应用程序。它是为了解决Java SE而不是Java EE的安全问题而构建的。

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

    然而,由于JavaEE构建在JavaSE之上,JAAS中的一些模块被重用在Java EE安全性中,例如Login模块和回调。

    注意,除了JavaEE安全之外,还有Spring Security(以前称为AcEGI),类似于本机Java EE安全解决了在安全Web应用程序问题中高得多的“层”。它是一个单独的安全实现,并不是建立在标准的JavaEE安全之上,尽管它在很多方面都是类似的。

    总而言之,除非您想在Java SE级别(类、系统资源)中确保资源,否则除了使用公共类和接口之外,我看不到JAAS的任何实际使用。只关注使用Spring Security或普通JavaEE安全性,这两种方法都解决了许多常见的Web应用程序安全问题。

        3
  •  11
  •   lisak    13 年前

    security是imho过度复杂的API。因此,不仅有逻辑模块的实现者,还有整个身份验证和授权API的实现者,它们在上面创建了抽象层,如身份验证和授权管理器。

    首先,最好打印 this 在你的记忆中。

    其次,对于JAAS,imho最简单的设置和Go库是jboss PicketBox . 它说明了如何通过jbossAuthenticationManager和jbossAuthorizationManager进行身份验证和授权…可通过XML或注释轻松配置。您可以使用它来管理webapps和独立应用程序。

    如果您需要授权部分来管理存储库访问,就资源的ACL而言,这是您需要确定的。

    安全性的问题是,通常您需要根据自己的需要对其进行定制,因此您最终可能会实现:

    验证模块 -验证用户名+密码

    回调处理程序 像这样使用 new LoginContext("Sample", new MyCallbackHandler());

    Callbackhandler被传递给底层的loginmodules,这样它们就可以与用户进行通信和交互——例如,通过图形用户界面提示输入用户名和密码。因此,在处理程序内部,您可以从用户那里获得用户名和密码,并将其传递给loginmodle。

    登录上下文 -然后您只需调用lc.login();并对凭证进行身份验证。使用已验证的主题填充LoginContext。

    不过,jboss picketbox为您提供了一个非常简单的方法,除非您需要特定的东西。

        4
  •  8
  •   Arjan Tijms UML GURU    11 年前

    LSIU的答案是少数真正“明白”的答案之一。)

    除此之外,关于这个主题的一个很好的参考文献是 Whatever Happened to JAAS? .

    它解释了Jasic是JavaEE中的servlet和EJB安全模型之间的链接,可能是JAAS登录模块,但在很多情况下JAAS的角色被简化为JavaEE中相对简单的用户名和角色提供程序。

    来自同一作者 JAAS in the Enterprise 这是一个较老的文章,但它提供了许多历史背景,说明为什么Java SE(JAAS)和JavaEE模型偏离了他们的方式。

    总体上,JAEE中直接使用的几种类型基本上是JavaEE。 Principal , Subject CallbackHandler . 后两种主要用于jaspic。我已经在文章中解释了jaspic Implementing container authentication in Java EE with JASPIC .

        5
  •  2
  •   matt b    13 年前

    我不能对贾斯说太多,但是这个 "suggested steps" guide 关于弹簧安全和 the reference manual 这两个都是关于Spring安全性的很好的资源——如果您的设置非常简单,那么您不需要做太多的事情来阅读这些。

        6
  •  1
  •   Mark    15 年前

    对于纯JAAS教程,请查看 this . 它很旧,但应该有助于JAAS的基础。