« 返回

Seguridad básica, JBoss 5.1

Introducción

Se pasa a describir a continuación el proceso para activar la autenticación básica en el servidor de aplicaciones JBoss 5.1. Parte de esta configuración se encuentra definida dentro del estándar JavaEE, por lo tanto, extrapolable a cualquier servidor de aplicaciones, y otra parte es específica para el servidor JBoss:

  1. Todo lo que aparece en el fichero web.xml será estándar JavaEE.
  2. Todo lo que aparece en los ficheros: jboss-web.xml, login-config.xml y server.xml será específico para el servidor JBoss.

Activación de la autenticación básica

Una aplicación web puede opcionalmente utilizar la seguridad basada en roles para controlar el acceso a los recursos. La especificación de servlets incluye una serie de entradas dentro del archivo de configuración de la aplicación web (web.xml). Estas entradas detallan las políticas de seguridad para tener acceso a los componentes web.

En este caso se pasa a activar la autenticación básica. Se añade la siguiente información en el fichero web.xml de la aplicación:

  <!-- Tipo de autenticacion a aplicar -->
  <login-config>
      <auth-method>BASIC</auth-method>
  </login-config>

Esta opción utiliza una autenticación básica HTTP que obliga al navegador a generar una ventana emergente (pop up) donde el usuario tiene que introducir usuario y contraseña.

Control de acceso

La especificación de servlets soporta control de acceso basado en roles. El sistema asigna usuarios y grupos de usuarios a roles y de esta forma puede controlar el acceso a los recursos de la aplicación. El control de acceso se divide en dos fases:

  1. Definición de roles de la aplicación.
  2. Asignación de roles a recursos de la aplicación.

Definición de roles de la aplicación.

Éstos se definen a través de la entrada <security-role> en el fichero web.xml. Su sintaxis se muestra a continuación:

<security-role>
        <role-name>identificadorRole</role-name>
        <description>Breve descripcion del role</description>
</security-role>

Se muestra como ejemplo, la creación de dos roles para la aplicación:

  <!-- Roles de la aplicación web -->
  <security-role>
      <role-name>admin</role-name>
  </security-role>
  <security-role>
      <role-name>user</role-name>
  </security-role>

Asignación de roles a recursos

Una vez creados los roles, se pasan a definir los recursos web a proteger. Los roles se asignan a recursos de la aplicación mediante la entrada <security-constraint> dentro del descriptor de despliegue estándar JavaEE, web.xml. Por ejemplo:

  <security-constraint>
      <web-resource-collection>
          <web-resource-name>protegido</web-resource-name>
          <url-pattern>/index.jsp</url-pattern>
      </web-resource-collection>
      <auth-constraint>
          <role-name>admin</role-name>
      </auth-constraint>
  </security-constraint>

Se protege la url /index.jsp, sólo los usuarios cuyo role sea admin pueden acceder a este recurso.

Dominios de seguridad en JBoss

Introducción

La forma de almacenar las identidades y credenciales (habitualmente los nombres de usuarios y contraseñas) de las entidades que desean autenticarse dentro de una aplicación quedan fuera del estándar, es decir, cada contenedor lo implementa de forma diferente. Se pasa a describir el procedimiento en JBoss 5.1.

Un dominio de seguridad no es más que un conjunto de usuarios y contraseñas que identifican usuarios válidos en aplicaciones web más una lista de roles asociados a los usuarios válidos.

El fichero login-config.xml

La definición de dominios de seguridad se realiza editando el fichero login-config.xml. Este fichero se encuentra en el directorio ${JBOSS_HOME}/server/<Instalacion>/conf.

El elemento <application-policy> permite crear el dominio de seguridad asociado a una aplicación. A continuación se muestra un ejemplo:

... 
<application-policy name="dominio1">
    <authentication>
      <login-module code="org.jboss.security.auth.spi.UsersRolesLoginModule"
        flag="required">
        <module-option name="usersProperties">props/console-users.properties</module-option>
        <module-option name="rolesProperties">props/console-roles.properties</module-option>
      </login-module>
    </authentication>
  </application-policy>
...

La entrada <login-module> permite definir los módulos de autenticación JAAS a aplicar para un determinado dominio de seguridad. En este caso, se utiliza la implementación org.jboss.security.auth.spi.UsersRolesLoginModule.

 

Módulo UserRolesLoginModule

Es un módulo de login muy simple, NO debe utilizarse en servidores en producción, pero nos permite ilustrar el almacenamiento de usuarios, contraseñas y roles de una forma clara.

Este módulo trabaja con dos ficheros de propiedades:

  1. El primero almacena pares de usuarios/contraseñas.
  2. El segundo almacena pares de usuario/roles.

Referencias a un dominio

Una vez definido el dominio de seguridad que se quiere aplicar a una aplicación web, se debe crear dentro de ella el descriptor jboss-web.xml. Este fichero, entre otras cosas, permite definir la relación entre la aplicación web y el dominio de seguridad que se quiere aplicar. Se muestra, a continuación, un ejemplo:

<?xml version="1.0" encoding="UTF-8"?>
<jboss-web>
    <security-domain>java:/jaas/dominio1</security-domain>
</jboss-web>

Este ejemplo supone que el dominio creado en el fichero login-config.xml se llama dominio1.

Pantallas de ejemplo

Una vez realizadas las operaciones anteriormente descritas, el sistema de autenticación se encuentra activo. Si mediante un navegador se intenta acceder al recurso index.jsp de nuestra aplicación, http://localhost:8080/NombreAplicacion/index.jsp.

Si se introduce un nombre de usuario y contraseña válido se accede al recurso demandado.

评论
引用通告 URL:

comments powered by Disqus