我在jboss上有一个自定义登录模块。耳朵的META-INF有一个jboss-app.xml,它指向一个login-service.xml,它包含一个指向定义登录模块的login-config.xml的mbean。
ear的META-INF中的jboss.xml使用与login-config.xml中为登录模块定义的安全域相同的安全域。
在那个耳朵里调用EJB时,我没有看到我的自定义登录模块运行登录和提交方法,就像我在过去在其他地方实现这一点时所看到的那样。
我有org.jboss.security的跟踪log4j设置,我在进行EJB调用时看到 nothing 。即使我没有通过身份验证,EJB调用也是成功的。
我无法理解为什么我的登录模块没有被调用或者如何调试JAAS决策过程。有任何想法吗?感谢。
答案 0 :(得分:3)
到目前为止你所做的是创建登录模块,现在你需要告诉你的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 {
答案 1 :(得分:2)
我在一些帮助下找到了问题。
我的jboss.xml位于耳朵的META-INF文件夹中,它应该位于EJB jar的META-INF文件夹中。
显然,耳朵的META-INF文件夹中的jboss文件应该是jboss-app.xml,我想这将是下次记住的线索。