< Anterior | Siguiente >

Lección 4.3: Configurar autorización basada en grupo

En la lección anterior, ha asignado autorización basada en usuario individual con principales de usuario en la política de autorización JAAS (Java Authentication and Authorization Service). Sin embargo, cuando tenga cientos o miles de usuarios, utilice la autorización basada en grupo, que autoriza el acceso en función de los grupos, en lugar de hacerlo en función de usuarios individuales.

Desafortunadamente, el objeto Subject que se autentica desde WebSphere Application Server solo contiene un principal de usuario. Este objeto no contiene un principal de grupo. Puede añadir un módulo de inicio de sesión personalizado para llenar el principal de grupo en el objeto Subject.

Para esta guía de aprendizaje, el módulo de inicio de sesión personalizado se denomina com.ibm.websphere.samples.objectgrid.security.lm.WASAddGroupLoginModule. El módulo se encuentra en el archivo groupLM.jar. Coloque este archivo JAR en el directorio WAS-INSTALL/lib/ext.

WASAddGroupLoginModule recupera la credencial de grupo pública del tema de WebSphere Application Server y crea un principal de grupo, com.ibm.websphere.samples.objectgrid.security.WSGroupPrincipal, para representar el grupo. A continuación, se puede utilizar este principal de grupo para la autorización de grupo. Los grupos se definen en el archivo xsAuthGroup2.policy:
grant codebase "http://www.ibm.com/com/ibm/ws/objectgrid/security/PrivilegedAction"
principal com.ibm.websphere.sample.xs.security.WSGroupPrincipal 
		"defaultWIMFileBasedRealm/cn=operatorGroup,o=defaultWIMFileBasedRealm" {
    permission com.ibm.websphere.objectgrid.security.MapPermission "Grid.Map1", "read";
};

grant codebase "http://www.ibm.com/com/ibm/ws/objectgrid/security/PrivilegedAction"
principal com.ibm.websphere.sample.xs.security.WSGroupPrincipal 
	"defaultWIMFileBasedRealm/cn=adminGroup,o=defaultWIMFileBasedRealm" {
    permission com.ibm.websphere.objectgrid.security.MapPermission "Grid.Map1", "all";
};
El nombre de principal es WSGroupPrincipal, que representa el grupo.

Adición del módulo de inicio de sesión personalizado

El módulo de inicio de sesión personalizado se debe añadir a cada una de las siguientes entradas de módulo de inicio de sesión del sistema: si utiliza LTPA (Lightweight Third Party Authentication), añada la entrada a los módulos de inicio de sesión de RMI_INBOUND. LTPA es el mecanismo de autenticación predeterminado de WebSphere Application Server Versión 7.0. Para una configuración de WebSphere Application Server Network Deployment, solo debe configurar las entradas de configuración del mecanismo de autenticación LTPA.

Utilice los pasos siguientes para configurar el módulo de inicio de sesión com.ibm.websphere.samples.objectgrid.security.lm.WASAddGroupLoginModule proporcionado:

  1. En la consola administrativa, pulse Seguridad > Seguridad global > Java Authentication and Authorization Service > Inicios de sesión del sistema > nombre_módulos_inicio_sesión > Módulos de inicio de sesión JAAS > Nuevo.
  2. Especifique el nombre de clase como com.ibm.websphere.sample.xs.security.lm.WASAddGroupLoginModule.
  3. Opcional: Añada una propiedad debug y establezca el valor en true.
  4. Pulse Aplicar para añadir el nuevo módulo a la lista de módulos de inicio de sesión.

Definición del archivo de política de autorización JAAS mediante las propiedades de JVM

En la consola administrativa, realice los pasos siguientes en los servidores xs1 y xs2 en el xsCluster. Si se utiliza una topología de despliegue distinta, realice los pasos siguientes en los servidores de aplicaciones que alojan los servidores de contenedor.

  1. En la consola administrativa, pulse Servidores > Servidores de aplicaciones > nombre_servidor > Java y gestión de procesos > Definición de proceso > Máquina virtual Java
  2. Especifique los siguientes argumentos de JVM genéricos o sustituya la entrada -Djava.security.auth.policy por el texto siguiente:
    -Djava.security.auth.policy=inicio_samples/security/xsAuthGroup2.policy
  3. Pulse Aceptar y guarde los cambios.

Prueba de la autorización de grupo con la aplicación de ejemplo

Puede comprobar si el módulo de inicio de sesión ha configurado la autorización de grupo mediante la aplicación de ejemplo.

  1. Reinicie los servidores de contenedor. Para esta guía de aprendizaje, los servidores de contenedor son los servidores xs1 y xs2.
  2. Inicie la sesión en la aplicación de ejemplo. En un navegador web, abra http://<host>:<puerto>/EmployeeManagementWeb/management.jsp e inicie la sesión con el nombre de usuario admin1 y la contraseña admin1.
  3. Visualice un empleado. Pulse Visualizar un empleado y busque la dirección de correo electrónico authemp2@acme.com. Se visualiza un mensaje que indica que no se puede encontrar el usuario.
  4. Añada un empleado. Pulse Añadir un empleado. Añada el correo electrónico authemp2@acme.com, el nombre Joe y el apellido Doe. Pulse Someter. Se visualiza un mensaje que indica que se ha añadido el empleado.
  5. Inicie la sesión como el usuario operator. Abra una segunda ventana de navegador web y abra el siguiente URL: http://<host>:<puerto>/EmployeeManagermentWeb/management.jsp. Utilice el nombre de usuario operator1 y la contraseña operator1.
  6. Intente visualizar un empleado. Pulse Visualizar un empleado y busque la dirección de correo electrónico authemp2@acme.com. Se visualizará el empleado.
  7. Añada un empleado. Pulse Añadir un empleado. Añada el correo electrónico authemp3@acme.com, el nombre Joe y el apellido Doe. Pulse Someter. Se visualiza el mensaje siguiente:
    Se produce una excepción al Añadir el empleado. Consulte a continuación para ver mensajes de excepción detallados.
    La siguiente excepción se encuentra en la cadena de la excepción:
    java.security.AccessControlException: Acceso denegado
    (com.ibm.websphere.objectgrid.security.MapPermission Grid.Map1 insert)
    Este mensaje se visualiza porque el usuario operator no tiene permiso para insertar datos en la correlación Map1.

Punto de comprobación de la lección

Ha configurado grupos para simplificar la asignación de permisos a los usuarios de la aplicación.

< Anterior | Siguiente >