JAAS 为人类服务
-
06-07-2019 - |
题
我很难理解 JAAS。这一切似乎比应有的更复杂(尤其是 Sun 教程)。我需要一个简单的教程或示例,介绍如何在基于 Struts + Spring + Hibernate 和自定义用户存储库的 java 应用程序中实现安全性(身份验证 + 授权)。可以使用ACEGI来实现。
解决方案
以下是我用来帮助理解JAAS的一些链接:
http://www.owasp.org/index.php/JAAS_Tomcat_Login_Module
http://www.javaworld.com/jw -09-2002 / JW-0913-jaas.html
http://jaasbook.wordpress.com/
另请参阅Apache tomcat领域配置方法:
其他提示
其他用户提供了一些非常有用的链接,所以我不打算使用链接。我在JAAS中进行了类似的Web应用研究,并遇到了“思路障碍”。直到我终于意识到JAAS是一个解决不同“层”安全问题的框架。然后是Java World中的Web应用程序。它是为解决Java SE而非Java EE中的安全问题而构建的。
JAAS是一个安全框架,用于保护比Web应用程序低得多的东西。这些事情的一些示例是JVM级别可用的代码和资源,因此所有这些都能够在JVM级别设置策略文件。
但是,由于Java EE是在Java SE之上构建的,因此JAAS中的一些模块在Java EE安全性中重用,例如LoginModules和Callbacks。
请注意,除了Java EE安全性之外,还有Spring安全性(以前称为Acegi),它类似于本机Java EE安全性,可以解决更高级别的“层”问题。在保护Web应用程序问题。它是一个单独的安全实现,并不是建立在标准Java EE安全性之上,尽管它在许多方面表现相似。
总而言之,除非您希望保护Java SE级别(类,系统资源)中的资源,否则除了使用公共类和接口之外,我看不到JAAS的任何实际用途。只关注使用Spring Security或普通的旧Java EE安全性,它们都解决了许多常见的Web应用程序安全问题。
javax.security 是一个过于复杂的 API。因此,不仅有 LoginModules 的实现者,还有整个身份验证和授权 api 的实现者,它们在上面创建了抽象层,例如身份验证和授权管理器。
对于初学者来说,打印是很好的选择 这 进入你的记忆。
其次,恕我直言,JAAS 最简单的设置和运行库是 Jboss 纠察箱. 。它说明了如何通过 JBossAuthenticationManager 和 JBossAuthorizationManager 进行身份验证和授权...通过 XML 或注释轻松配置。您可以使用它来管理网络应用程序和独立应用程序。
如果您需要授权部分来管理存储库访问,就资源的 ACL 而言,这就是您所需要的。
安全性问题是,通常您需要根据您的需求对其进行自定义,因此您最终可能会实现:
登录模块 - 验证用户名+密码
回调处理程序 像这样使用 new LoginContext("Sample", new MyCallbackHandler());
CallbackHandler 被传递到底层的 LoginModule,以便它们可以与用户通信和交互 - 例如,通过图形用户界面提示输入用户名和密码。因此,在处理程序内部,您从用户那里获取用户名和密码,并将其传递给 LoginModule。
登录上下文 - 然后你只需调用 lc.login();并验证凭据。LoginContext 填充有经过身份验证的主题。
然而,Jboss picketbox 为您提供了一种非常简单的方法,除非您需要特定的东西。
lsiu的回答是这里的几个答案之一,真的“得到它”。 ;)
除此之外,无论发生在JAAS上的是什么?一>。
它解释了JASPIC如何是Java EE中Servlet和EJB安全模型之间的链接,以及可能是JAAS登录模块,但在许多情况下,JAAS的角色被简化为Java EE中相对简单的用户名和角色提供者的角色。
来自同一作者的是企业中的JAAS ,这是一篇较旧的文章但是为Java SE(JAAS)和Java EE模型分散原因提供了很多历史背景。
总体而言,JAAS中的一些类型直接在Java EE中使用,基本上是 Principal
, Subject
和 CallbackHandler
。后两者主要由JASPIC使用。我在文章在Java EE中实现容器身份验证中解释了JASPIC JASPIC 。
我不能对JAAS本身说太多话,但这个 “建议的步骤”关于Spring Security的指南和参考手册都是关于Spring Security的相当不错的资源 - 如果您的设置接近简单,那么除了阅读这些内容之外,您不需要做更多的事情。
对于纯粹的JAAS教程,请查看此。它已经过时但应该有助于JAAS的基础知识。