JAAS自定义登录模块
问题描述:
我有一个自定义登录模块在jboss耳朵上。耳朵的META-INF有一个jboss-app.xml,它指向一个login-service.xml,它包含一个指向login-config.xml的mbean,它定义了自定义登录模块。JAAS自定义登录模块
耳朵的META-INF中的jboss.xml使用与为login-config.xml中的登录模块定义的安全域相同的安全域。
在那个耳朵里打一个EJB的调用时,我没有看到我的自定义登录模块运行登录和提交方法,就像我以前在其他地方实现过的那样。
我有跟踪log4j设置为org.jboss.security和我看什么都没有在进行EJB调用。即使我没有通过身份验证,EJB调用也会成功。
我无法弄清楚为什么我的登录模块没有被调用或者如何调试JAAS决策过程。有任何想法吗?谢谢。
答
我发现这个问题,有一定的帮助。
我的jboss.xml位于耳朵的META-INF文件夹中,它应该位于EJB jar的META-INF文件夹中。
显然,耳朵的META-INF文件夹中的jboss文件应该是jboss-app.xml,我想这将是下次记住的线索。
答
你做了什么至今创造登录模块,现在你需要告诉你的EJB使用它:
import javax.annotation.security.RolesAllowed;
import javax.ejb.Stateless;
import org.jboss.ejb3.annotation.SecurityDomain;
@Stateless
@SecurityDomain("mySecurityDomain")
@RolesAllowed({"guestRole", "userRole", "adminRole"})
public class SecureBean implements Secure {
谢谢 - 我怎样才能做到这一点没有注释?我确实在指定安全域的jboss.xml中定义了EJB,但不确定这是否是注释的替代方法。 – rich 2010-06-09 16:18:05