Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 2 Next »

This page describes how to configure the O3 Server to use LDAP or Active Directory as the authentication mechanism.

Basic knowledge of LDAP is required to understand these instructions, as well as basic experience regarding the configuration of the LDAP and Active Directory servers of your choice.

This description includes some examples that serve only as a guide since the strcture of directories may differ depending on the selected LDAP server.

These instructions apply to versions 4.0.400 o higher

O3 Server security

O3 Server Security is based on a module usually known as RBAC (Role Based Access Control).

This module defines a set of repositories that store all elements involved in the security mechanisms of the server (users, roles, attributes, relationships between all of them, etc.).

It is possible to choose among different repository implementations thus allowing data to be stored and retrieved from different servers and using various technologies.

O3 includes an implementation that allows RBAC to connect to directory servers such as LDAP and Active Directory.

Configuring the O3 Server

The specific implementation of RBAC repositories is declared in a file called GServer.properties. This file is located in the folder <O3>/jboss/server/default/ideasoft-o3

This file defines a set of properties that describe the repository and how to access it.

#RBAC Repositories Configuration
#rbac.roleRepository         = com.ideasoft.rbac.repository.impl.jndi.JndiRoleRepository
#rbac.userRepository         = com.ideasoft.rbac.repository.impl.jndi.JndiUserRepository
#rbac.raAssignmentRepository = com.ideasoft.rbac.repository.impl.jndi.JndiRAAssignmentRepository
#rbac.loginService           = com.ideasoft.rbac.repository.impl.jndi.JndiLoginService

O3's distribution includes all of these properties commented out, as they can be seen in the previous section with all the lines starting with the hash mark (#). In order to activate the use of LDAP or Active Directory, these characters need to be deleted to look like this:

#RBAC Repositories Configuration
rbac.roleRepository         = com.ideasoft.rbac.repository.impl.jndi.JndiRoleRepository
rbac.userRepository         = com.ideasoft.rbac.repository.impl.jndi.JndiUserRepository
rbac.raAssignmentRepository = com.ideasoft.rbac.repository.impl.jndi.JndiRAAssignmentRepository
rbac.loginService           = com.ideasoft.rbac.repository.impl.jndi.JndiLoginService

(warning) Nota
Si lo único que se desea es validar los usuarios contra LDAP o Active Directory, teniendo los roles definidos en la base de datos de O3, sólo deberá descomentarse las líneas que especifican el rbac.loginService y rbac.userRepository. Si no se habilita el rbac.userRepository todos los usuarios deberán existir tanto en LDAP como en la base de datos de O3.

Además de habilitar el uso de implementaciones alternativas de los repositorios de RBAC, es necesario configurar una serie de parámetros que cada mecanismo (LDAP o Active Directory) requieren para su correcto funcionamiento.

Estas configuraciones específicas para cada servidor se indican en un archivo adicional que se encuentra en la carpeta <O3>/jboss/server/default/ideasoft-o3/config/rbac

El nombre del archivo de configuración a utilizar se indica también en el GServer.properties que puede encontrarse en la carpeta <O3>/jboss/server/default/ideasoft-o3 mediante la siguiente property:

jndi.cfg.filename = JndiConfiguration-SunONE.properties

La distribución de O3 incluye dos archivos de ejemplo JndiConfiguration-MS.properties y JndiConfiguration-SunONE.properties para Microsoft Active Directory y SunONE Directory Server respectivamente. Al final de este documento se pueden ver estos ejemplos.

Estos archivos definen los siguientes parámetros:

Parámetro

Descripción

java.naming.provider.url

Indica la ruta al servidor donde se encuentran los repositorios. Esta ruta es de la forma ldap://<host>:<port>

java.naming.factory.initial

Indica el nombre de la clase java que implementa el Contexto Inicial. Este es un parámetro del sistema que no debe cambiarse a menos que se indique lo contrario. El valor por defecto de esta property es "com.sun.jndi.ldap.LdapCtxFactory"

java.naming.security.authentication

Indica el mecanismo de autenticación. Este es un parámetro del sistema que no debe cambiarse a menos que se indique lo contrario. El valor por defecto de esta property es "simple"

browseUserDN

Distinguished Name del usuario que utiliza el sistema para obtener las listas de usuarios, roles, etc.

browseUserPassword.plain

Contraseña del usuario indicado en el parámetro browseUserDN. El valor de esta property se ingresa como texto plano y una vez que el servidor se reinicia ésta es cambiada por la property browseUserPassword cuyo valor será encriptado en forma automática por el servidor

roleDefAttributeID

Nombre del atributo que deben tener las entradas en el directorio que representan roles

roleDefValueAttributeID

Valor que debe tener el atributo roleDefAttributeID para ser considerado un rol

roleNameAttributeID

Atributo que se va a utilizar para recuperar el nombre del rol

roleSearchBaseDN

DN a partir del cual se buscarán los roles

userDefAttributeID

Nombre del atributo que deben tener las entradas en el directorio que representan usuarios

userDefValueAttributeID

Valor que debe tener el atributo userDefAttributeID para ser considerado un usuario

userNameAttributeID

Atributo que se va a utilizar para recuperar el nombre del usuario

userSearchBaseDN

DN a partir del cual se buscarán los usuarios

userRolesAttributeID

Nombre del atributo multivaluado que contiene la lista de los roles que tiene asignado el usuario

(warning) Nota
Para el caso en que la lista de roles indicada por la property userRolesAttributeID sea una lista de DN (Distinguished Name) en lugar de los nombres de los roles directamente, es necesario especificar el atributo dereferenceRoleAttribute, el cual indica el atributo a partir del cual se va a obtener el nombre del rol. En este caso, el valor de dereferenceRoleAttribute y el de roleNameAttributeID deben coincidir para que funcione correctamente la asignación de roles a usuarios.

(warning) Nota
Para que la validación de usuarios sea exitosa es necesario que éstos tengan definidos el atributo "dn"

Ejemplos de Archivos de Configuración

Ejemplo de Archivo de configuración para Microsoft Active Directory
#Microsoft - Active Directoy Configuation file

java.naming.provider.url  = ldap://dataserver:389
userRolesAttributeID      = memberOf
dereferenceRoleAttribute  = cn

#Browse user's  DN (used to bind to the Directory)

#Option 1: User Principal Name (username@domain)
#browseUserDN             = o3user@radiusserver.ideasoft.com
#browseUserPassword.plain = ????????

#Option 2: DN (Distinguished Name)
browseUserDN              = CN=O3User, OU=People, DC=radiusserver, DC=ideasoft, DC=com
browseUserPassword.plain  = ????????

#Roles's Entry definition
roleDefAttributeID        = objectclass
roleDefValueAttributeID   = group
roleNameAttributeID       = cn
roleSearchBaseDN          = ou=Roles, dc=radiusserver, dc=ideasoft, dc=com

#User's Entry definition
userDefAttributeID        = objectclass
userDefValueAttributeID   = user
userNameAttributeID       = sAMAccountName
userSearchBaseDN          = ou=People, dc=radiusserver, dc=ideasoft, dc=com
Ejemplo de Archivo de configuración para SunONE Directory Server
#Sun ONE Directory Server Configuation file

java.naming.provider.url  = ldap://dataserver:51685
userRolesAttributeID      = nsrole
dereferenceRoleAttribute  = cn

#Browse user's  DN (used to bind to the Directory)
browseUserDN              = uid=admin, cn=directory administrators, dc=ideasoft
browseUserPassword.plain  = ????????

#Roles's Entry definition
roleDefAttributeID        = objectclass
roleDefValueAttributeID   = ldapsubentry
roleNameAttributeID       = cn
roleSearchBaseDN          = ou=People, dc=ideasoft

#User's Entry definition
userDefAttributeID        = objectclass
userDefValueAttributeID   = person
userNameAttributeID       = uid
userSearchBaseDN          = ou=People, dc=ideasoft
  • No labels