14.8.2. Configure Java Authorization Contract for Containers (JACC) Security
jboss-web.xmlto include the correct parameters.
To add JACC support to the security domain, add the
JACC authorization policy to the authorization stack of the security domain, with the
required flag set. The following is an example of a security domain with JACC support. However, the security domain is configured in the Management Console or Management CLI, rather than directly in the XML.
<security-domain name="jacc" cache-type="default"> <authentication> <login-module code="UsersRoles" flag="required"> </login-module> </authentication> <authorization> <policy-module code="JACC" flag="required"/> </authorization> </security-domain>
jboss-web.xml is located in the
WEB-INF/ directory of your deployment, and contains overrides and additional JBoss-specific configuration for the web container. To use your JACC-enabled security domain, you need to include the
<security-domain> element, and also set the
<use-jboss-authorization> element to
true. The following application is properly configured to use the JACC security domain above.
<jboss-web> <security-domain>jacc</security-domain> <use-jboss-authorization>true</use-jboss-authorization> </jboss-web>
Configuring EJBs to use a security domain and to use JACC differs from Web Applications. For an EJB, you can declare method permissions on a method or group of methods, in the
ejb-jar.xml descriptor. Within the
<ejb-jar> element, any child
<method-permission> elements contain information about JACC roles. Refer to the example configuration for more details. The
EJBMethodPermission class is part of the Java Enterprise Edition 6 API, and is documented at http://docs.oracle.com/javaee/6/api/javax/security/jacc/EJBMethodPermission.html.
Example 14.19. Example JACC Method Permissions in an EJB
<ejb-jar> <method-permission> <description>The employee and temp-employee roles may access any method of the EmployeeService bean </description> <role-name>employee</role-name> <role-name>temp-employee</role-name> <method> <ejb-name>EmployeeService</ejb-name> <method-name>*</method-name> </method> </method-permission> </ejb-jar>
jboss-ejb3.xmldescriptor, in the
<security>child element. In addition to the security domain, you can also specify the run-as principal, which changes the principal the EJB runs as.
Example 14.20. Example Security Domain Declaration in an EJB
<security> <ejb-name>*</ejb-name> <security-domain>myDomain</security-domain> <run-as-principal>myPrincipal</run-as-principal> </security>