I am trying to do JAAS authentication with Seam 3.1.0 in a JBoss 7 container. Per suggestions made by http://seamframework.org/149168.lace, I created an authenticator and packaged it in a JAR with the following beans.xml:
<beans xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:s="urn:java:ee" xmlns:security="urn:java:org.jboss.seam.security" xmlns:p="urn:java:com.mycompany" xsi:schemaLocation=" http://java.sun.com/xml/ns/javaee http://docs.jboss.org/cdi/beans_1_0.xsd"> <interceptors> <class>org.jboss.seam.security.SecurityInterceptor</class> </interceptors> <p:MyJAAS> <s:modifies/> <p:jaasConfigName>myJAASConfig</p:jaasConfigName> </p:MyJAAS> <security:IdentityImpl> <s:modifies/> <security:authenticatorClass>com.mycompany.MyJAAS</security:authenticatorClass> </security:IdentityImpl> </beans>
The JAR is packaged in the WEB-INF/lib directory of a WAR (along with all of the Seam libraries), that is then packaged in an EAR. When I try to do identity.login from a facelet, I get the following exception:
java.lang.IllegalStateException: jaasConfigName cannot be null. Please set it to a valid JAAS configuration name.
at com.perooski.MyJAAS.authenticate(MyJAAS.java:60) [jaastest-1.0.jar:]
at com.perooski.MyJAAS$Proxy$_$$_WeldClientProxy.authenticate(MyJAAS$Proxy$_$$_WeldClientProxy.java) [jaastest-1.0.jar:]
at org.jboss.seam.security.IdentityImpl.authenticate(IdentityImpl.java:224) [seam-security-3.1.0.Final.jar:3.1.0.Final]
This implies that the XML to set the jaasConfigName is not being executed (I think Solder is supposed to do this).
This works fine if I copy the WAR deployment out of the EAR and deploy the WAR on its own. Any ideas?