I upgraded from JBoss3.2.0 to 4.0.5. I am using FORM based authentication. I
have a custom login module that entends DatabaseServerLoginModule. I am able
to login to the web application correctly. All the correct roles are assigned
to the user. However, when I access a secured method in one of my EJB's, the
principal is null. Here is the error I am receiving:
java.rmi.AccessException: SecurityException; nested exception is:
java.lang.SecurityException: Insufficient method permissions, principal=null,
ejbName=IndexingManager, method=create, interface=HOME, requiredRoles=[INDEX],
principalRoles=[ANONYMOUS, PARTNER]
It gives me the ANONYMOUS and PARTNER roles because these are the roles
associated with the unauthenticatedIdentity.
Here is my login-config.xml:
<application-policy name = "myRealm">
| <authentication>
| <login-module
code="com.pcarrollnf.appserver.jboss.security.CustomLoginModule"
flag="required">
| <module-option name =
"unauthenticatedIdentity">anonymous</module-option>
| <module-option name =
"dsJndiName">java:/jdbc/myRealm</module-option>
| <module-option name = "principalsQuery">SELECT A.PASSWORD
FROM USERS A WHERE A.IS_ENABLED = 1 AND A.USER_NAME = ? AND ( A.EXPIRATION_DATE
IS NULL OR A.EXPIRATION_DATE >= ? )</module-option>
| <module-option name = "rolesQuery">SELECT DISTINCT
A.USER_NAME, C.ROLE_NAME FROM USER_GROUP A, ROLE_GROUP B, ROLES C WHERE
A.USER_NAME = ? AND A.GROUP_ID = B.GROUP_ID AND B.ROLE_ID =
C.ROLE_ID</module-option>
| </login-module>
| </authentication>
| </application-policy>
|
I tried adding:
<login-module code = "org.jboss.security.ClientLoginModule" flag =
"required"></login-module>
as the last login module in the myRealm policy but this did not work.
Here is a snippet from my web.xml
<login-config>
| <auth-method>FORM</auth-method>
| <realm-name>DefaultRealm</realm-name>
| <form-login-config>
| <form-login-page>/login.do</form-login-page>
| <form-error-page>/loginError.do</form-error-page>
| </form-login-config>
| </login-config>
|
| <security-role>
| <role-name>ADMIN</role-name>
| </security-role>
| <security-role>
| <role-name>CONFIG</role-name>
| </security-role>
| <security-role>
| <role-name>INDEX</role-name>
| </security-role>
| <security-role>
| <role-name>PUBLISH</role-name>
| </security-role>
| <security-role>
| <role-name>USER</role-name>
| </security-role>
| <security-role>
| <role-name>PARTNER</role-name>
| </security-role>
| <security-role>
| <role-name>ANONYMOUS</role-name>
| </security-role>
Here is my ejb-jar.xml:
<ejb-jar>
| <enterprise-beans>
|
| <session>
| <ejb-name>IndexingManager</ejb-name>
| <home>com.pcarrollnf.indexing.api.IndexingManagerHome</home>
| <remote>com.pcarrollnf.indexing.api.IndexingManager</remote>
|
<ejb-class>com.pcarrollnf.indexing.ejb.IndexingManagerBean</ejb-class>
| <session-type>Stateless</session-type>
| <transaction-type>Container</transaction-type>
| <ejb-local-ref>
| <ejb-ref-name>ejb/DocumentSchemaAttribute</ejb-ref-name>
| <ejb-ref-type>Entity</ejb-ref-type>
|
<local-home>com.pcarrollnf.schema.ejb.DocumentLocalHome</local-home>
| <local>com.digitalpaper.pcarrollnf.ejb.DocumentLocal</local>
| <ejb-link>Document</ejb-link>
| </ejb-local-ref>
|
| <security-identity><use-caller-identity/></security-identity>
| </session>
|
| <assembly-descriptor>
| <security-role>
| <role-name>INDEX</role-name>
| </security-role>
|
| <method-permission>
| <role-name>INDEX</role-name>
| <method>
| <ejb-name>IndexingManager</ejb-name>
| <method-name>*</method-name>
| </method>
| </method-permission>
|
| <container-transaction>
| <method>
| <ejb-name>IndexingManager</ejb-name>
| <method-name>*</method-name>
| </method>
| <trans-attribute>Required</trans-attribute>
| </container-transaction>
| </assembly-descriptor>
| </ejb-jar>
Here is my jboss.xml:
<jboss>
| <security-domain>java:/jaas/myRealm</security-domain>
| <enterprise-beans>
| <session>
| <ejb-name>IndexingManager</ejb-name>
| <jndi-name>indexing/IndexingManager</jndi-name>
| <configuration-name>Standard Stateless
SessionBean</configuration-name>
| </session>
| </enterprise-beans>
| <container-configurations>
| <container-configuration extends="Standard CMP 2.x EntityBean">
| <container-name>CMP 2.x and Cache</container-name>
| <commit-option>D</commit-option>
| <optiond-refresh-rate>300</optiond-refresh-rate>
| </container-configuration>
| </container-configurations>
| </jboss>
Any help would be appreciated. If you need me to post more information, please
let me know. Thanks.
View the original post :
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4004955#4004955
Reply to the post :
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4004955
_______________________________________________
jboss-user mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/jboss-user