Skip to main content

[javaee-spec issues] [JIRA] Commented: (JAVAEE_SPEC-20) Standardize group to role mapping

  • From: "arjan tijms (JIRA)" <jira-no-reply@...>
  • To: issues@...
  • Subject: [javaee-spec issues] [JIRA] Commented: (JAVAEE_SPEC-20) Standardize group to role mapping
  • Date: Sat, 4 May 2013 08:18:35 +0000 (UTC)
  • Auto-submitted: auto-generated


    [ 
https://java.net/jira/browse/JAVAEE_SPEC-20?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=363221#action_363221
 ] 

arjan tijms commented on JAVAEE_SPEC-20:
----------------------------------------

Example of people running into this issue: 
http://stackoverflow.com/questions/2230717/dynamic-roles-on-a-java-ee-server

For the particular use case described in that link it's not only important 
that an application can indicate there's no mapping required, but also that 
roles don't need to be declared upfront. Indeed, if the main reason for 
declaring roles upfront is to the make the job of the person who does role 
mapping easier, then this too will not be needed if there's no role mapping 
at all.

> Standardize group to role mapping
> ---------------------------------
>
>                 Key: JAVAEE_SPEC-20
>                 URL: https://java.net/jira/browse/JAVAEE_SPEC-20
>             Project: javaee-spec
>          Issue Type: New Feature
>            Reporter: arjan tijms
>            Assignee: ldemichiel
>
> Many Java EE implementations (but not all), require a process that's often 
> called "group to role mapping". The idea here is that authentication/login 
> modules (either proprietary or the standardized JASPIC SAMs) never return 
> "roles", but return "groups". A deployer then maps the roles that the 
> application uses to the groups that the authentication module returns.
> This mechanism is useful for when a single authentication module is used to 
> provide security for a number of different applications that each use 
> different names for the same logical role. The way this group to role 
> mapping is done is almost the same for every Java EE implementation, but 
> uses incompatible syntax in proprietary deployment descriptors.
> For instance, mapping a single role for GlassFish, WebLogic, WebSphere and 
> Geronimo looks as follows:
> {code:xml}
> GlassFish 3.1.2.2
> WEB-INF/sun-web.xml 
> <!DOCTYPE sun-web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Application 
> Server 9.0 Servlet 2.5//EN" 
>     "http://www.sun.com/software/appserver/dtds/sun-web-app_2_5-0.dtd";>
> <sun-web-app>
>  
>     <security-role-mapping>
>         <role-name>architect</role-name>
>         <group-name>architect</group-name>
>     </security-role-mapping>
>  
> </sun-web-app>
> {code}
> {code:xml}
> WebLogic 12c (12.1.1)
> WEB-INF/weblogic.xml 
> <weblogic-web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
>     xsi:schemaLocation="http://www.bea.com/ns/weblogic/weblogic-web-app.xsd";
>     xmlns="http://www.bea.com/ns/weblogic/weblogic-web-app";>
>  
>     <security-role-assignment>
>         <role-name>architect</role-name>
>         <principal-name>architect</principal-name>
>     </security-role-assignment>
>  
> </weblogic-web-app>
> {code}
> {code:xml}
> WebSphere 8.5
> [EAR]/META-INF/ibm-application-bnd.xml 
> <application-bnd xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
>     xsi:schemaLocation="http://websphere.ibm.com/xml/ns/javaee ;
> http://websphere.ibm.com/xml/ns/javaee/ibm-application-bnd_1_1.xsd";
>     xmlns="http://websphere.ibm.com/xml/ns/javaee";
>     version="1.1">
>  
>     <security-role name="architect"> 
>         <group name="architect" />
>     </security-role>
>      
> </application-bnd>
> {code}
> {code:xml}
> Geronimo v3.0
> WEB-INF/geronimo-web.xml 
> <web:web-app
>     xmlns:sec="http://geronimo.apache.org/xml/ns/security-2.0";
> >
>  
>     <sec:security>
>         <sec:role-mappings>
>             <sec:role role-name="architect">
>                 <sec:principal
>                     
> class="org.apache.geronimo.security.realm.providers.GeronimoGroupPrincipal"
>                     name="architect"
>                 />
>             </sec:role>
>         </sec:role-mappings>
>     </sec:security>
>      
> </web:web-app>
> {code}
> Having a different syntax for basically the same thing hurts portability 
> and makes it unnecessarily difficult for a Java EE developer to transfer 
> his or her skills to a different Java EE implementation.
> Further more, although role mapping can be an essential feature for some 
> use cases, it can be totally unnecessary for others. If there's nothing to 
> map, then requiring the developer to provide a group to role mapping anyway 
> isn't exactly following the ease-of-use theme that Java EE 5 started.
> I would therefor like to propose the introduction of a standardized syntax 
> for group to role mapping with the special case of a standard way to 
> declare that no such mapping should be done.
> Standardized group to role mapping can possibly take advantage of the 
> existing {{security-role-ref}} in deployers such as {{web.xml}}. 
> E.g.: when the full double indirection is used:
> {code:xml}
> <security-role-ref>
>     <!-- Role name as set/returned by Authentication Module -->
>     <role-group>Management</role-group>
>     <!-- Role name for mapping -->
>     <role-name>MGR</role-name>
>     
>     <!-- Role name used in code -->
>     <role-link>manager</role-link>
> </security-role-ref>
> {code}
> When single indirection is used:
> {code:xml}
> <security-role-ref>
>     <!-- Role name as set/returned by Authentication Module -->
>     <role-group>Management</role-group>
>     <!-- Role name used in code -->
>     <role-name>MGR</role-name>
> </security-role-ref>
> {code}
> When no indirection is used:
> {code:xml}
> <security-role-ref groupToRoleMapping="false" />
> {code}
> The last fragment could become the default to be more consistent with the 
> situation when no {{role-link}} is used (e.g. a developer also doesn't have 
> to explicitly specify that a "roleToLink" mapping should not be done).
> Optionally the two steps of role mapping could be separated as follows:
> {code:xml}
> <security-role-ref>
>     <!-- Role name as set/returned by Authentication Module -->
>     <role-group>Management</role-group>
>     <!-- Role name for mapping -->
>     <role-name>MGR</role-name>
> </security-role-ref>
> <security-role-ref>
>     <!-- Role name for mapping -->
>     <role-name>MGR</role-name>
>     
>     <!-- Role name used in code -->
>     <role-link>manager</role-link>
> </security-role-ref>
> {code}
> An additional benefit of standardized group to role mapping could be that 
> it can automatically take advantage of the configuration efforts done in 
> Java EE 8 (see also JAVAEE_SPEC-19).

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
https://java.net/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        


[javaee-spec issues] [JIRA] Commented: (JAVAEE_SPEC-20) Standardize group to role mapping

arjan tijms (JIRA) 05/04/2013
 
 
Close
loading
Please Confirm
Close