El módulo de autorización PAC-LDAP permite que Caching Proxy acceda al servidor LDAP (Lightweight Directory Access Protocol) al realizar rutinas de autorización o autenticación. El módulo consta de dos conjuntos de componentes: un par de bibliotecas compartidas que añaden las funciones LDAP a la API de Caching Proxy y un daemon PAC (Policy Authentication Control). Una directiva ServerInit del archivo ibmproxy.conf indica a la biblioteca compartida que inicialice uno o más daemons PAC cuando se inicie Caching Proxy. Las bibliotecas compartidas leen un archivo paccp.conf para determinar el número y características de los daemons PAC. Durante la inicialización, el daemon lee el archivo pac.conf para las directivas de configuración y el archivo pacpolicy.conf para la información de políticas. A continuación, una directiva Authentication del archivo ibmproxy.conf indica al servidor proxy que llame a la biblioteca compartida siempre que la autenticación sea necesaria, o bien una directiva Authorization usurpa el flujo de trabajo de Caching Proxy durante el proceso de peticiones HTTP.
El proceso de autenticación determina si un conjunto proporcionado de credenciales – nombre de usuario y contraseña – es válido. Este proceso incluye la verificación de que un usuario esté en el registro y que la contraseña facilitada coincida con la contraseña almacenada en ese registro. A continuación, se indican las acciones realizadas mediante el módulo PAC-LDAP durante el paso de autenticación.
Cuando se habilita el módulo de autorización PAC-LDAP para las funciones de autenticación, se convierte en el depósito por omisión del que se obtienen los ID de usuario, las contraseñas y los grupos. Cuando una petición HTTP pasa a través del flujo de trabajo de Caching Proxy, todas las directivas Protect comparan el URL solicitado con la correspondiente plantilla de petición. Si se produce una coincidencia, la directiva Protect invoca un esquema de protección, que incluye el ID de servidor, el tipo de autenticación que se va a utilizar, las normas de enmascaramiento que se deben aplicar al cliente solicitante y las ubicación de los archivos de grupos y contraseñas. Si no se define el archivo de contraseñas, el ID de usuario y contraseña se recuperan a través del módulo de autorización PAC-LDAP. Las políticas del tipo 0, 1, 2 y 3 definen los esquemas de autenticación. Si se pasa la autenticación, se sirve la autenticación; de lo contrario, Caching Proxy devuelve un error 401 al cliente.
El proceso de autorización determina si un usuario tiene el permiso necesario para acceder al recurso protegido. Cuando se utiliza el módulo PAC-LDAP, es necesaria la aplicación de las normas de autorización que residan en el archivo pacpolicy.conf para la petición HTTP.
Cuando se habilita el módulo de autorización PAC-LDAP para las funciones de autorización, las normas de autorización del archivo pacpolicy.conf se aplican a la petición HTTP. Cuando una petición HTTP pasa a través del flujo de trabajo de Caching Proxy, todas las directivas Protect comparan el URL solicitado con la correspondiente plantilla de petición. Si se produce una coincidencia, la directiva Protect invoca un esquema de protección. En este caso, el esquema de protección es la rutina de autorización tomada por el módulo de autorización PAC-LDAP. La directiva Authorization compara el URL solicitado con la correspondiente plantilla de petición y, si se produce una coincidencia, se invoca al módulo de autorización PAC-LDAP. Las políticas de tipo 4 definidas en el archivo pacpolicy.conf que ajustan de forma adicional la autenticación necesaria para varias peticiones URL.
LDAP proporciona acceso interactivo a los directorios X.500 con un consumo mínimo de los recursos del sistema. IANA ha asignado el puerto TCP 389 y el puerto UDP 389 a LDAP. Para obtener más información, consulte RFC 1777, que define LDAP.
Son ejemplos de clientes LDAP soportados: el cliente LDAP de IBM Tivoli y el cliente LDAP de IBM SecureWay.
Todos los componentes del módulo de autorización PAC-LDAP se instalan automáticamente cuando se instala el sistema Caching Proxy de WebSphere Application Server, Versión 8.0. En sistemas Linux y UNIX, se crean un directorio de bibliotecas Caching Proxy (./lib/), un directorio de bibliotecas módulo de autorización PAC-LDAP (./lib/plugins/pac/), un directorio binario (./bin/) y un directorio de configuración (./etc/) dentro del directorio /opt/ibm/edge/cp/. A continuación, se crean enlaces simbólicos desde los directorios /usr/lib/, /usr/sbin/ y /etc con estos directorios específicos de productos.
Estructura de directorio
Directorio Linux y UNIX | Directorio Windows | Contenido |
---|---|---|
/opt/ibm/edge/cp | C:\Archivos de programa\IBM\edge\cachingproxy\cp | Directorio base de Caching Proxy ( raíz_cp) |
cp_root/sbin | C:\Archivos de programa\IBM\edge\cachingproxy\cp\Bin\ | Binarios y scripts de Caching Proxy |
/usr/sbin/ | Enlaces simbólicos con raíz_cp/sbin/ | |
raíz_cp/etc/ | C:\Archivos de programa\IBM\edge\cachingproxy\cp\etc\ | Archivo de configuración de Caching Proxy |
/etc/ | Enlaces simbólicos con raíz_cp/etc/ | |
raíz_cp/lib/ | C:\Archivos de programa\IBM\edge\cachingproxy\cp\lib\plugins\ | Bibliotecas de Caching Proxy |
raíz_cp/lib/ plugins/pac/ | C:\Archivos de programa\IBM\edge\cachingproxy\cp\lib\plugins\pac\ | Bibliotecas de módulo de autorización PAC-LDAP |
/usr/lib/ | Enlaces simbólicos con raíz_cp/lib/ y raíz_cp/lib/ plugins/pac/ | |
raíz_cp/server_root/pac/data/ | C:\Archivos de programa\IBM\edge\cachingproxy\cp\server_root\pac\data\ | Almacenamiento de datos de módulo de autorización PAC-LDAP |
raíz_cp/server_root/ pac/creds/ | C:\Archivos de programa\IBM\edge\cachingproxy\cp\server_root\pac\creds\ | Credenciales del módulo de autorización PAC-LDAP |
Archivos del plug-in LDAP
Nombre de archivo Linux y UNIX | Nombre de archivo Windows | Descripción |
---|---|---|
libpacwte.so | pacwte.dll | Biblioteca compartida |
libpacman.so | pacman.dll | Biblioteca compartida |
pacd_restart.sh | pacd_restart.bat | Script de reinicio de daemons PAC |
paccp.conf, pac.conf, pacpolicy.conf | paccp.conf, pac.conf, pacpolicy.conf | archivos de configuración y de políticas |
Para habilitar las conexiones SSL (Secure Sockets Layer) entre el daemon PACD y el servidor LDAP, debe instalar el paquete GSKit que el paquete de cliente LDAP necesita. GSKit 7 es necesario en la máquina de Caching Proxy, donde se facilita por omisión, pero es posible que no sea la versión que requiere el cliente LDAP en la máquina. Se pueden utilizar versiones distintas de GSKit en la misma máquina para procesos distintos.
Coloque el archivo de claves de GSKit en $pacd_creds_dir/pac_keyring.kdb y la contraseña en $pacd_creds_dir/pac_keyring.pwd.
En los sistemas Linux, la variable de entorno LD_PRELOAD debe configurarse del siguiente modo para habilitar las conexiones SSL entre el PACD y el servidor LDAP. Establezca la variable en el siguiente valor:
LD_PRELOAD=/usr/lib/libstdc++-libc6.1-1.so.2
El requisito de GSKit al que se hace referencia anteriormente también se aplica a los sistemas Linux.
En los sistemas Red Hat Enterprise Linux 4.0, el proceso PACD no se inicia cuando se configura Caching Proxy para utilizar el plug-in LDAP de ITDS 6.0 para realizar la autenticación. Se produce el siguiente mensaje de error:
"error while loading shared libraries: /usr/lib/libldapiconv.so: R_PPC_REL24 relocation at 0x0fb58ad0 for symbol 'strpbrk' out of range"
Existe actualmente la restricción de que ITDS 6.0 no da soporte a los sistemas RHEL 4.0.
El proceso PACD no se inicia en los sistemas AIX debido a unos enlaces no resueltos al utilizar el cliente LDAP de ITDS. Cuando se inicia el proceso PACD, podría producirse el siguiente error:
exec(): 0509-036 Cannot load program /usr/sbin/pacd because of the following errors: 0509-022 Cannot load module /usr/lib/libpacman.a. 0509-150 Dependent module libldap.a could not be loaded. 0509-022 Cannot load module libldap.a.
Para eludir este problema para ITDS versión 5 del cliente LDAP, cree el símbolo siguiente:
ln -s /usr/lib/libibmldap.a /usr/lib/libldap.a
Para eludir este problema para ITDS versión 6 del cliente LDAP, cree el símbolo siguiente:
ln -s /opt/IBM/ldap/V6.0/lib/libibmldap.a /usr/lib/libldap.a
Las tres directivas ServerInit, Authorization o Authentication, y ServerTerm deben añadirse al apartado de directivas API del archivo ibmproxy.conf para inicializar el módulo de autorización PAC-LDAP. Para crear estas directivas, edite el archivo ibmproxy.conf manualmente o, si el servidor proxy ya está en ejecución, conéctese a los formularios de Configuración y Administración con un navegador de Internet y abra el formulario Petición de proceso de API (Pulse Servidor de configuración –> Proceso de peticiones.–> Petición de proceso de API). Todas las directivas deben aparecer en una única línea en el archivo de configuración de proxy, independientemente de si los ejemplos proporcionados en este apartado contienen divisiones de línea para que sean legibles.
Tenga en cuenta que las directivas de prototipo (en forma de comentarios) se facilitan en el apartado API del archivo ibmproxy.conf. Estas directivas API aparecen en un orden determinado. Al añadir las directivas API para habilitar nuevas características y módulos de plug-in, ordene las directivas como se muestran en la parte de prototipo del archivo de configuración. Alternativamente, elimine los comentarios de las directivas API y edítelas, si es necesario, para incluir el soporte de todas las funciones o plug-ins deseados.
La directiva ServerInit tiene tres argumentos: (1) la vía de acceso plenamente cualificada de la biblioteca compartida, (2) la llamada de función y (3) la vía de acceso plenamente cualificado del archivo paccp.conf. El primer y segundo argumentos se delimitan por dos puntos (:). El segundo y tercer argumentos se delimitan por un espacio. El primer y tercer argumentos son específicos del sistema y dependen de dónde se han instalado los componentes de plug-in. El segundo argumento se codifica en la biblioteca compartida y debe escribirse exactamente como se muestra. Al crear una directiva ServerInit mediante el formulario Petición de proceso de API, tanto el segundo como el tercer argumento deben especificarse en el campo Nombre de función. El tercer argumento se muestra en la columna Plantilla de IP.
La directiva Authorization tiene tres argumentos: (1) una plantilla de petición, (2) la vía de acceso plenamente cualificada de la biblioteca compartida y (3) el nombre de función. Las peticiones HTTP se comparan con la plantilla de petición para determinar si se llama a la función de aplicación. La plantilla de petición puede incluir un protocolo, un dominio y un sistema principal; puede estar precedida por una barra inclinada (/), y puede utilizar un asterisco (*) como carácter comodín. Por ejemplo, las posibilidades /front_page.html , http://www.ics.raleigh.ibm.com, /pub*, /* y * son todas válidas. El nombre de función es el nombre asignado a la función de aplicación del programa. Está codificado y debe escribirse exactamente como se muestra. Los primeros dos argumentos se delimitan por un espacio. Los dos últimos argumentos se delimitan mediante dos puntos (:).
La directiva Authentication tiene dos argumentos: (1) la vía de acceso plenamente cualificada de la biblioteca compartida y (2) el nombre de función. Estos argumentos se delimitan por dos puntos(:). El primer argumento es específico del sistema y depende de dónde está instalada la biblioteca compartida. La plantilla de URL del primer argumento debe empezar en el directorio raíz de documentos (/) al utilizar Caching Proxy como proxy de retorno. El segundo argumento se codifica en la biblioteca compartida y debe escribirse exactamente como se muestra.
La directiva ServerTerm tiene dos argumentos: (1) la vía de acceso plenamente cualificada de la biblioteca compartida y (2) el nombre de función. Estos argumentos se delimitan por dos puntos(:). El primer argumento es específico del sistema y depende de dónde está instalada la biblioteca compartida. El segundo argumento se codifica en la biblioteca compartida y debe escribirse exactamente como se muestra. Esta directiva finaliza el daemon PAC cuando se cierra el servidor proxy. Si el propietario del daemon es distinto del propietario del servidor proxy, es posible que el servidor proxy no pueda detener el daemon, en cuyo caso un administrador debe detener manualmente el daemon.
ServerInit vía_acceso_biblioteca_compartida :pacwte_auth_init archivo_políticas_conf_vía_acceso
Ejemplo de Linux y UNIX:
ServerInit /usr/lib/libpacwte.so:pacwte_auth_init /etc/pac.conf
Ejemplo de Windows:
ServerInit C:\Archivos de programa\IBM\edge\cachingproxy\cp\lib\plugins\ pac\pacwte.dll:pacwte_auth_init C:\Progra ~1\IBM\edge\cp
Authorization request-template vía_de_biblioteca_compartida:pacwte_auth_policy
Ejemplo de Linux y UNIX:
Authorization http://* /usr/lib/libpacwte.so:pacwte_auth_policy
Ejemplo de Windows:
Authorization http://* C:\Archivos de programa\IBM\edge\cachingproxy\cp\lib\plugins\ pac\pacwte.dll:pacwte_auth_policy
Authentication BASIC vía_de_biblioteca_compartida:pacwte_auth_policy
Ejemplo de Linux y UNIX:
Authentication BASIC /usr/lib/plugins/pac/libpacwte.so:pacwte_auth_policy
Ejemplo de Windows:
Authentication BASIC C:\Archivos de programa\IBM\edge\cachingproxy\cp\lib\plugins\ pac\pacwte.dll:pacwte_auth_policy
ServerTerm vía_de_biblioteca_compartida:pacwte_shutdown
Ejemplo de Linux y UNIX:
ServerTerm /usr/lib/libpacwte.so:pacwte_shutdown
Ejemplo de Windows:
ServerTerm BASIC C:\Archivos de programa\IBM\edge\cachingproxy\cp\lib\plugins\ pac\bin\pacwte.dll:pacwte_shutdown
Los archivos de configuración y de políticas del módulo de autorización PAC-LDAP deben editarse manualmente con un editor de texto. Un nombre de directiva se separa del primer argumento mediante dos puntos (:). Si existen varios argumentos se delimitan por comas (,). Los comentarios incluidos los archivos de configuración y de políticas ayudan a editarlos. A continuación se muestras las directivas de políticas más relevantes.
Las bibliotecas compartidas leen el archivo paccp.conf durante la inicialización de Caching Proxy y dicho archivo contiene las definiciones (apartado [PAC_MAN_SERVER]) de cada uno de los daemons PAC que se iniciarán. Todos los daemons PAC deben tener su propio apartado [PAC_MAN_SERVER].
[PAC_MAN_SERVER] hostname: # name of PAC daemon port: # port pacd is listening on [PACWTE_PLUGIN] hostname_check:[true|false] # enables DNS lookup. Must have # DNS lookup turned on for ibmproxy to work.
El archivo pac.conf especifica el servidor LDAP con el que el daemon PAC intenta conectarse.
[PAC_MAN_SERVER]
hostname: # name of PAC daemon
port: # port pacd is listening on
conn_type:ssl # comment out if you do not use SSL
authentication_sequence: [primary|secondary|none]
authorization_sequence: [primary|secondary|none]
[LDAP_SERVER]
hostname: # LDAP Server hostname
port:389 # Port LDAP is listening on
ssl_port:636 # SSL port used by the LDAP server
admin_dn: # User with permission to access the LDAP server
# specify admin_dn:NULL to enable anonymous binding
search_base: # Portion of LDAP tree to search for policy info
# If not required, specify search_base:NULL
search_key: # ID field to search
[CACHE]
cred_cache_enabled [TRUE|FALSE] # turn credentials cache on
cred_cache_min_size:100 # minimum number of credentials to cache in pacd
cred_cache_max_size:64000 # maximum number of credentials to cache in pacd
cred_cache_expiration:86400 # when a credential expires
policy_cache_enabled:[TRUE|FALSE] # turns policy cache on/off
policy_cache_min_size:100 # min. number of policy related items to cache
policy_cache_max_size:64000 # max. number of policy related items to cache
policy_cache_expiration:86400 # when a policy related item expires
Todas las políticas LDAP utilizan la siguiente plantilla en los archivos de configuración y de políticas. Todas las políticas deben empezar por la palabra clave en mayúscula POLICY entre paréntesis.
[POLICY] default_policy:[grant|deny] # describes the default policy for users # that are not described in the POLICY section pac_client_hotname: # the instances of Caching Proxy that are allowed # to use a policy list id: # the id for the LDAP entry or ip/hostname # (wildcard supported, such as *.ibm.com) grant:[true|false] # true means to grant access, false means # to deny access type:[0|1|2|3|4] # 0 LDAP entry that is a group, # 1 LDAP entry that is not a group, # 2 IP address # 3 hostname # 4 URL propagate:[true|false] # true means that the access rights (grant # or deny) will be propagated to all # descendants or members stop_entry:[entry|NULL] # Propagation of the access right stops # at this entry. If the id is a group, # stop_entry must be set to NULL. # stop_entry may be applied to an IP # address or hostname. Each stop_entry # must be on its own line exception_entry:[entry|NULL] # Assignment of the access right skips # these entries, but continues through their # subtrees. This may be a list of entries. # exception_entry may be applied to a group, # IP address, or hostname. Each # exception_entry must be on its own line. Exception_type: Exception:
Sólo se da soporte al carácter comodín (*) cuando ocupa la última posición de una dirección IP o la primera posición de un nombre de sistema principal de las directivas id y stop_entry . Los caracteres comodín no reciben soporte en exception_entry . Tampoco se da soporte a los caracteres comodín en las entradas LDAP de cualquier campo.
Se da soporte a varias políticas y, si las políticas entran en conflicto, el valor false siempre tiene preferencia. Es decir, se bloquea el acceso sólo con que se produzca una única denegación en cualquier política. El orden en que se enumeran las políticas en los archivos de configuración y de políticas es irrelevante y no establece ninguna prioridad.
Para obtener un conjunto de ejemplos de políticas, consulte el archivo the pacpolicy.conf del directorio de archivos de configuración.
Cree un archivo de texto plano denominado pac_ldap.cred en /raíz_cp/server_root/pac/creds . Este archivo contiene la contraseña correspondiente al nombre de usuario de la directiva admin_dn, que se encuentra en el archivo pac.conf.
El daemon PAC cifra la contraseña la primera vez que lee el archivo.
Para crear el archivo pac_ldap.cred en las plataformas Linux y UNIX, emita los siguientes mandatos:
cd raíz_cp/server_root/pac/creds echo "password" > pac_ldap.cred chown nobody pac_ldap.cred chgrp nobody pac_ldap.cred (en SUSE Linux, utilice chgrp nogroup pac_ldap.cred.)
Para crear el archivo en una plataforma Windows, escriba la contraseña en un archivo de texto y almacene el archivo en el directorio server_root\pac\creds\.
El daemon de autorización LDAP se ejecuta como el proceso pacd. Puede reiniciar el daemon de autorización LDAP sin interrumpir Caching Proxy mediante la utilización de los scripts que se facilitan. Ejecute el script pacd del modo siguiente:
/usr/sbin/pacd_restart.sh id_usuario_pacd
C:\Archivos de programa\IBM\edge\cachingproxy\cp\Bin\pacd_restart.bat raíz_instalación_CP
kill -15 ID_proceso_pacd
En HP-UX: es posible que el plug-in PAC-LDAP y pacd no carguen todas las bibliotecas compartidas dependientes durante el tiempo de ejecución. Antes de utilizarlos, asegúrese de que las variables de sistema estén establecidas del siguiente modo
SHLIB_PATH=/usr/lib:/usr/IBMldap/lib PATH=/usr/IBMldap/bin:$PATH PATH=/usr/IBMldap/bin/usr/IBMldap/
es la vía de acceso de instalación por omisión del cliente LDAP en HP-UX. Se recomienda que ajuste PATH y SHLIB_PATH según corresponda si el cliente LDAP se instala en una ubicación distinta. Sin establecer estas variables, pueden ocurrir los siguientes errores:
"Serverinit Error: server did not load functions from DLL module /opt/ibm/edge/cp/lib/plugins/pac/libpacwte.sl"
"/usr/lib/dld.sl: Can't find path for shared library: libibmldap.sl /usr/lib/dld.sl: No such file or directory Abort"
En Linux: en SUSE Linux Enterprise Server 9, ldd pacd podría informar que no se encuentra libldap.so. Para evitar este problema, cree el siguiente enlace simbólico:
ln -s /usr/lib/libldap.so.19 /usr/lib/libldap.so
En AIX: al iniciar pacd con IBM Tivoli Directory Server 5.2, es posible que el módulo PAC-LDAP no pueda cargarse y se genere el siguiente error:
exec(): 0509-036 Cannot load program /usr/sbin/pacd because of the following errors: 0509-022 Cannot load module /usr/lib/libpacman.a. 0509-150 Dependent module libldap.a could not be loaded. 0509-022 Cannot load module libldap.a.
Para evitar este problema, cree el siguiente enlace simbólico:
ln -s /usr/lib/libibmldap.a /usr/lib/libldap.a
Could not extract a value for: Uid, return code:3Este error se mostrará incluso cuando la autenticación LDAP funcione correctamente y puede hacerse caso omiso de él.