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: Wed, 20 Feb 2013 21:16:53 +0000 (GMT+00:00)
  • Auto-submitted: auto-generated


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

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

Note that in the {{security-role-ref}} samples above I accidentally switched 
{{role-name}} and {{role-link}} (unfortunately it's not possible to edit your 
own issue's description).

The assumption was also that the {{security-role-ref}} element would be 
re-used outside the {{servlet}} element, but on second thought that's perhaps 
not really clear and it would be better to introduce a new element.

The given syntax at any length is of course just an example, the key 
requirement is that role mapping is standardized (in whatever way) and 
there's the option to turn role mapping completely off (in whatever way).

> Standardize group to role mapping
> ---------------------------------
>
>                 Key: JAVAEE_SPEC-20
>                 URL: http://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: 
http://java.net/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        


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

arjan tijms (JIRA) 02/13/2013

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

arjan tijms (JIRA) 02/20/2013
 
 
Close
loading
Please Confirm
Close