Para quienes preguntan por el uso de Active Directory o cualquier otro servidor LDAP para autenticación en aplicaciones APEX, a continuación el procedimiento para definir este tipo de autenticación.
Se puede configurar cualquier esquema de autenticación que utiliza una página de login para usar LDAP para verificar el nombre de usuario y contraseña enviados en la página de login.
APEX incluye asistentes y páginas de edición que explican como configurar esta opción. Estos asistentes asumen que existe un directorio LDAP accesible por la aplicación para tal propósito y que puede responder a una llamada SIMPLE_BIND_S para verificación de credenciales. Cuando se crea un esquema de autenticación de Credenciales LDAP, el asistente solicita y guarda el nombre del servidor LDAP, puerto, cadena DN y determina si debe utilizar SSL, DN exacto, y de manera opcional un filtro de búsqueda si no se utiliza DN exacto. Se puede especificar de manera opcional una función de pre-proceso para ajustar el formato del nombre de usuario pasado al API.
Para definir un Directorio LDAP:
1. En la página principal del espacio de trabajo, haga clic en el ícono Creador de Aplicaciones.
2. Seleccione la aplicación en la cual quiere realizar la definición.
3. En la página principal de la aplicación, haga clic en Componentes Compartidos.
4. Bajo Seguridad, seleccione Esquemas de Autenticación.
5. En la página de Esquemas de Autenticación, haga clic en el botón Crear.
6. Seleccione la opción Basado en un esquema preconfigurado de la galería y haga clic en el botón Siguiente.
7. Bajo Nombre:
a. Nombre – Ingrese el nombre usado para hacer referencia al esquema de autenticación por parte de otros desarrolladores de la aplicación.
b. Tipo de Esquema – Seleccione Directorio LDAP.
8. Bajo Configuración:
a. Host – Ingrese el nombre del servidor de su directorio LDAP.
b. Puerto – Ingrese el número de puerto de su servidor de direcotrio LDAP.
c. Usar SSL – Seleccione si se debe utilizar SSL para ligarse al directorio LDAP. Si selecciona SSL con Autenticación, se debe configurar un “wallet” para la instancia APEX.
d. Cadena de Nombre Distintivo (DN) – Ingrese el patrón usado para construir la cadena de nombre distintivo (DN) enteramente calificada a DBMS_LDAP.SIMPLE_BIND_S si está usando DN exacto o la base de búsqueda si no se está utilizando. Utilice %LDAP_USER% como contenedor para el nombre de usuario. Por ejemplo:
DN Exacto:
cn=%LDAP_USER%,l=amer,dc=sudominio,dc=com
DN no exacto (base de búsqueda):
dc=sudominio,dc=com
e. Usar Nombre Distinguido Exacto (DN) – Seleccione si Nombre Distinguido LDAP (DN) es exacto o no. Si no es exacto, Cadena de Nombre Distintivo (DN) es la base de búsqueda y se debe proporcionar un Filtro de Búsqueda.
f. Función de Edición de Nombre de Usuario de LDAP – Se puede proveer código adicional a ejecutar para transformar el nombre de usuario a un formato que calce perfectamente con la entrada del directorio LDAP o el usuario LDAP. La variable bind :USERNAME contiene el nombre del usuario final especificado. Por ejemplo, el siguiente código llama una función que reemplaza todos los puntos (.) con un subrayado (_) en la cadena DN:
return apex_custom_auth.ldap_dnprep(p_username => :USERNAME);
g. Identificación de Nombre de Usuario – Seleccione la manera en la que APEX “escapa” a caracteres especiales en %LDAP_USER%. El valor correcto para este atributo depende del uso del servidor LDAP y si una Función de Edición de Nombre de Usuario LDAP ya “escapa” caracteres especiales.
9. Haga clic en el botón Crear.
Puede utilizar la ayuda de cada uno de los campos para tener mayor información acerca de cada uno de ellos.
Algo importante es que si se elige SSL con Autenticación como el modo SSL, se debe definir un “wallet” utilizando las definiciones de instancia de APEX. De manera adicional, la certificación raíz del servidor LDAP debe ser importada dentro del “wallet” como un certificado de confianza.