Skip to main content

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

  • From: "arjan tijms (JIRA)" <jira-no-reply@...>
  • To: issues@...
  • Subject: [javaee-spec issues] [JIRA] Created: (JAVAEE_SPEC-20) Standardize group to role mapping
  • Date: Wed, 13 Feb 2013 21:07:55 +0000 (GMT+00:00)
  • Auto-submitted: auto-generated

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