Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Avance en la sección reinos de seguridad

...

Code Block
xml
xml
borderStylesolid
titlegeronimo-properties-realm
<configuration configId="SecurityRealm-geronimo-properties-realm" xmlns="http://geronimo.apache.org/xml/ns/deployment-1.0">
    <gbean name="geronimo-properties-realm" class="org.apache.geronimo.security.realm.GenericSecurityRealm">
        <attribute name="realmName">geronimo-properties-realm</attribute>
        <reference name="ServerInfo">
            <gbean-name>geronimo.server:J2EEApplication=null,J2EEModule=geronimo/j2ee-system/1.0/car,J2EEServer=geronimo,j2eeType=GBean,name=ServerInfo</gbean-name>
        </reference>
        <reference name="LoginService">
            <gbean-name>geronimo.server:J2EEApplication=null,J2EEModule=geronimo/j2ee-security/1.0/car,J2EEServer=geronimo,j2eeType=JaasLoginService,name=JaasLoginService</gbean-name>
        </reference>
        <xml-reference name="LoginModuleConfiguration">
            <log:login-config xmlns:log="http://geronimo.apache.org/xml/ns/loginconfig-1.0">
                <log:login-module control-flag="REQUIRED" server-side="true" wrap-principals="false">
                    <log:login-domain-name>geronimo-properties-realm</log:login-domain-name>
                    <log:login-module-class>org.apache.geronimo.security.realm.providers.PropertiesFileLoginModule</log:login-module-class>
                    <log:option name="usersURI">var/security/users.properties</log:option>
                    <log:option name="groupsURI">var/security/groups.properties</log:option>
                </log:login-module>
            </log:login-config>
        </xml-reference>
    </gbean>
</configuration>

<configuration configId="SecurityRealm-geronimo-properties-realm" xmlns="http://geronimo.apache.org/xml/ns/deployment-1.0">
    <gbean name="geronimo-properties-realm" class="org.apache.geronimo.security.realm.GenericSecurityRealm">
        <attribute name="realmName">geronimo-properties-realm</attribute>
	<reference name="ServerInfo">
	    <gbean-name>geronimo.server:J2EEApplication=null,J2EEModule=geronimo/j2ee-system/1.0/car,J2EEServer=geronimo,
	                j2eeType=GBean,name=ServerInfo</gbean-name>
	</reference>
        <reference name="LoginService">
            <gbean-name>geronimo.server:J2EEApplication=null,J2EEModule=geronimo/j2ee-security/1.0/car,J2EEServer=geronimo,
	            j2eeType=JaasLoginService,name=JaasLoginService</gbean-name>
        </reference>
	<xml-reference name="LoginModuleConfiguration">
            <log:login-config xmlns:log="http://geronimo.apache.org/xml/ns/loginconfig-1.0">
                <log:login-module control-flag="REQUIRED" server-side="true" wrap-principals="false">
                    <log:login-domain-name>geronimo-properties-realm</log:login-domain-name>
                    <log:login-module-class>org.apache.geronimo.security.realm.providers.PropertiesFileLoginModule</log:login-module-class>
                    <log:option name="usersURI">var/security/users.properties</log:option>
                    <log:option name="groupsURI">var/security/groups.properties</log:option>
                </log:login-module>
            </log:login-config>
        </xml-reference>
    </gbean>
</configuration>

Como se mencionó previamente, este plan es para el reino de seguridad por defecto, basado en archivo de propiedades. Cuando creas un nuevo reino, tendrás que elegir de los siguientes tipos de reinos disponibles:

  • Certificate Properties File Realm (Reino de Archivo de Propiedades Certificadas)
  • Database (SQL) Realm (Reino de Base de datos (SQL))
  • LDAP Realm (Reino LDAP)
  • Properties File Realm (Reino de Archivo de Propiedades)
  • Other (Otro)

La última opcion disponible te permite crear tu propio tipo adaptado de reino, cuando ninguno de los disponibles cumple con las necesidades de tu ambiente.

Apache Geronimo tiene un reino de archivo de propiedades previamente configurado, el cual es el reino empleado por defecto para la autenticación. Geronimo también viene con un grupo de aplicaciones ejemplo; una de dichas aplicaciones proporciona un reino de seguridad adicional para LDAP. Para este ejemplo, nos enfocaremos en un tipo distinto, emplearemos una base de datos para la verificación y consulta de nombres de usuario y sus contraseñas.

Para este ejemplo creamos una nueva base de datos, llamada BaseDeDatosDeSeguridad, usando la base de datos Derby pre-construida. Los siguientes pasos resumen al procedimiento seguido para crear la base de datos y tablas, cargar algunos datos ejemplo y crear al pool de conexiones. Instrucciones detalladas en como definir pools de conexiones a base de datos son descritas en la sección #Configurando pools de bases de datos.

Crea la base de datos y carga datos ejemplo

Crea el pool de conexiones

...

Como se mencionó previamente, este plan es para el reino de seguridad por defecto, basado en archivo de propiedades. Cuando creas un nuevo reino, tendrás que elegir de los siguientes tipos de reinos disponibles:

  • Certificate Properties File Realm (Reino de Archivo de Propiedades Certificadas)
  • Database (SQL) Realm (Reino de Base de datos (SQL))
  • LDAP Realm (Reino LDAP)
  • Properties File Realm (Reino de Archivo de Propiedades)
  • Other (Otro)

La última opcion disponible te permite crear tu propio tipo adaptado de reino, cuando ninguno de los disponibles cumple con las necesidades de tu ambiente.

Apache Geronimo tiene un reino de archivo de propiedades previamente configurado, el cual es el reino empleado por defecto para la autenticación. Geronimo también viene con un grupo de aplicaciones ejemplo; una de dichas aplicaciones proporciona un reino de seguridad adicional para LDAP. Para este ejemplo, nos enfocaremos en un tipo distinto, emplearemos una base de datos para la verificación y consulta de nombres de usuario y sus contraseñas.

Para este ejemplo creamos una nueva base de datos, llamada BaseDeDatosDeSeguridad, usando la base de datos Derby pre-construida. Los siguientes pasos resumen al procedimiento seguido para crear la base de datos y tablas, cargar algunos datos ejemplo y crear al pool de conexiones. Instrucciones detalladas en como definir pools de conexiones a base de datos son descritas en la sección #Configurando pools de bases de datos.

Crear la base de datos y cargar datos ejemplo

  • A la izquierda, en el menú Console Navigation _(Navegación de Consola), haz clic en Database Manager _(Administrador de Base de datos).
  • Ingresa BaseDeDatosDeSeguridad en el campo Create DB: (Crear BD: ) y haz clic en Create (Crear).
  • Selecciona BaseDeDatosDeSeguridad del menú Use DB: (Usa BD: ) e ingresa los siguientes comandos, para después hacer clic en Run SQL (Ejecuta SQL).
    create table usuarios
    (nombreusuario varchar(15),
    password varchar(15));
    create table grupos
    (nombreusuario varchar(15),
    nombregrupo varchar(15));
    insert into usuarios values('usuariouno','p1');
    insert into usuarios values('usuariodos','p2');
    insert into usuarios values('usuariotres','p3');
    insert into grupos values('usuariouno','admin');
    insert into grupos values('usuariodos','admin');
    insert into grupos values('usuariotres','usuario');

Crear pool de conexiones

  • A la izquierda, en el menú de Console Navigation _(Navegación de Consola), haz clic en Database Pools _(Pools de Base de Datos).
  • Clic en Using the Geronimo database pool wizard (Usando al ayudante de Geronimo para pool de base de datos).
  • Ingresa BaseDeDatosDeSeguridad como nombre para el pool de base de datos. Selecciona Derby embedded (Derby embebida) desde el menú del tipo de pool de base de datos y haz clic en Next (Siguiente).
  • Verifica que la clase del controlador JDBC sea org.apache.derby.jdbc.EmbeddedDriver.
  • Desde el menú Driver Jar (Jar Controlador), selecciona org.apache.derby/derby/10.1.1.0/jar.
  • Deja en blanco al nombre de usuario y password.
  • Ingresa BaseDeDatosDeSeguridad como nombre de base de datos y haz clic en Next (Siguiente).
  • Hacer clic en Test Connection _(Probar Conexión)_.
  • Hacer clic en Deploy (Activar).

Agrega un nuevo reino de seguridad

Para crear un nuevo reino de seguridad, haz clic en Add new security realm (Agregar nuevo reino de seguridad) desde el portlet Security Realms (Reinos de Seguridad).

Image Added

Ingresa reino_de_seguridad_derby en el campo Name of Security Realm: (Nombre del Reino de Seguridad: ) y selecciona Database (SQL) Realm (Reino (SQL) Base de datos) del menú Realm type: (Tipo de Reino: ) y haz clic en Next (Siguiente).

La siguiente pantalla configura al módulo de acceso (login). Los primeros dos campos que necesitarás llenar, variarán potencialmente de acuerdo al tupo de base de datos. En este caso, estamos usando la base de datos Derby embebida, por lo que los select SQL de User y Group deberían leerse como sigue:

User SELECT SQL: select nombreusuario, password from APP.usuarios where nombreusuario=?
Group SELECT SQL: select nombreusuario, nombregrupo from APP.grupos where nombreusuario=?

Nota que APP es el esquema por defecto para la base de datos Derby embebida, y requiere preceder a la tabla en el enunciado SQL. Estos enunciados tienden a ser distintos de una base de datos a otra; por ejemplo, este procedimiento también fue probado con DB2, donde los enunciados SQL empleados fueron:

User SELECT SQL: select nombreusuario, password from usuarios where nombreusuario=?
Group SELECT SQL: select nombreusuario, nombregrupo from grupos where nombreusuario=?

Al haber ingresado los enunciados SQL para la obtención de usuarios y grupos, necesitas elegir del menú Database Pool (Pool de Base de datos) al pool de conexiones a la base de datos que creaste en el paso previo (#Crear pool de conexiones), para después hacer clic en Next (Siguiente).

No es necesario llenar los campos restantes, porque esa información ya ha sido proporcionada por el pool de conexiones a la base de datos. Si no estas empleando pools de conexiones a base de datos predefinidos, necesitarás proporcionar todos los campos faltantes.

Image Added

El paso siguiente te permitirá el activar auditoría (auditing) para monitorear los intentos de acceso mediante este reino. En este paso también puedes configurar el bloqueo de cuentas, basándose en la cantidad de intentos de acceso fallidos dentro de un margen de tiempo específico. La última opción en este paso, Store Password (Guardar Password), cuando esta habilitada permitirá al reino el guardar la password de usuario en una credencial privada en el Subject.

Image Added

En este punto ya haz configurado al nuevo reino de seguridad; el siguiente paso es para probarlo y después activarlo. Haz clic en Test a Login (Probar un Acceso).

Ingresa un nombre y contraseña válidos para obtenerlos de la base de datos y haz clic en Next (Siguiente).

Image Added

Deberías recibir un mensaje de confirmación indicando que el acceso fue exitoso; haz clic en Deploy Realm (Activar Reino) para cargar esta configuración al servidor.

Image Added

Ahora tienes un nuevo, completamente configurado, reino de seguridad que comprueba nombre de usuarios y contraseñas desde la base de datos Derby incluida.

Probando el reino de seguridad

...