3

我想创建(由我自己实现)身份验证机制,该机制将插入到我的 Java EE 应用程序中。

据我所知,我必须实现 LoginModule 并以某种方式将此实现与容器机制连接起来。但问题是我不知道该怎么做。也许您知道我在哪里可以找到有关它的示例代码或教程?

换句话说,我想强制容器在调用方法时调用我的类:身份验证、登录和注销。

示例实现: HttpServletRequest.login 方法将仅成功验证登录时具有偶数个字母的用户。

4

3 回答 3

4

我相信独立于容器的方法是使用 JASPIC (JSR 196)。不幸的是,它看起来并不简单、健壮或记录得特别好。这是一个参考: http ://arjan-tijms.blogspot.com/2012/11/implementing-container-authentication.html 。

于 2014-04-03T15:19:41.577 回答
2

在阅读了 JAAS 之后,您应该基于org.jboss.security.auth.spi.AbstractServerLoginModule(来自org.picketbox/picketbox maven artifact)来实现您的登录模块。然后将模块部署到您的应用程序中,并在 WildFly 的standalone.xml 中创建适当的安全域和领域,如下所示:

<security-domain name="myDomain" cache-type="default">
  <authentication>
    <login-module code="com.example.TestLoginModule" flag="required" 
module="deployment.sample.jar"/>
  </authentication>
</security-domain>

...

<security-realm name="MyRealm">
 <authentication>
   <jaas name="myDomain"/>
 </authentication>
</security-realm>

注意不同 JBoss AS 版本上的不同行为。7.1.1 不允许您部署登录模块,您必须创建一个单独的 jboss 模块并将其与 org.picketbox 和 jboss.security 模块绑定。

补充阅读: https ://docs.jboss.org/author/display/WFLY8/Security+subsystem+configuration

https://docs.jboss.org/author/display/WFLY8/Security+Realms

http://java.dzone.com/articles/creating-custom-login-modules(它有点过时,但给出了主要思想)

于 2014-02-09T23:13:58.543 回答
1

您应该研究 JAAS。

维基百科给出了一个很好的概述: http ://en.m.wikipedia.org/wiki/Java_Authentication_and_Authorization_Service

这将提供您需要的所有信息和教程:http: //docs.oracle.com/javase/7/docs/technotes/guides/security/

示例应用教程:http: //download.java.net/jdk8/docs/technotes/guides/security/jaas/tutorials/GeneralAcnOnly.html

并在 SO: JAAS for Humans中查看这一点

于 2014-02-05T21:34:47.287 回答