Apache OpenID · 10 min read · Dec 27, 2025
Instalar y Configurar El Módulo Apache Para Autenticación OpenID
Módulo Apache Para Autenticación OpenID
OpenID es una tecnología ampliamente adoptada para la autenticación de usuarios en aplicaciones web. Se basa en los conceptos de autenticación de usuarios distribuidos en aplicaciones de blogs. Este pequeño libro de cocina explica paso a paso cómo instalar y configurar el módulo Apache de código abierto mod_auth_oid.
El propósito de este módulo es proporcionar una implementación simple de parte confiable que se puede utilizar para proteger el acceso a aplicaciones y recursos web basados en Apache. El módulo no implementa todas las funciones descritas en la Especificación oficial. Sin embargo, sus características ya son lo suficientemente maduras como para proporcionar una usabilidad de inicio de sesión cómoda para sus aplicaciones y usuarios.
También se incluyen dos módulos adicionales que mejoran el módulo de autenticación con la capacidad de mapear identificadores de usuario a usuarios locales, no solo a través de la configuración de Apache, sino también mediante un archivo de mapeo local (que puede ya existir de otras aplicaciones) o a través de Ldap.
Advertencia de Seguridad: El módulo no soporta Extensiones de Protocolo como PAPE. Por lo tanto, no se recomienda su uso en entornos con mayores requisitos de protección de datos, como atención médica o transacciones monetarias.
Instalación
Requisitos Previos
Para instalar este módulo de Apache, se deben cumplir los siguientes requisitos:
- Apache 2.2 incluyendo mod_ssl, mod_proxy, mod_include, archivos de encabezado y apxs/apxs2 (a menudo referidos como paquetes apache2 y apache2-devel).
- Módulo de Apache mod_parp para el análisis de parámetros. Consíguelo aquí. La instalación es sencilla: Usa sudo o inicia sesión como root:
$ tar xvBzf mod_parp-0.10-src.tar.gz $ cd mod_parp-0.10 $ sudo apxs2 -i -c apache2/mod_parp.c $ sudo chmod 755 /usr/lib64/apache2/mod_parp.so
Módulo Principal
Descarga y descomprime el código fuente desde aquí.
$ tar xvBzf mod_auth_oid-2.0-src.tar.gz
$ cd mod_auth_oid-2.0
$ sudo apxs2 -i -c -I . -D AOID_MOD_EXT_HOOKS apache2/mod_auth_oid.c -lcrypto -lparp*Opcional: Hay módulos adicionales que vienen con el código fuente. Si también deseas usar el módulo adicional altamente recomendado mod_auth_oid_file.c o el mod_auth_oid_ldap.c, compílalos e instálalos también con cualquiera de los siguientes comandos.*
$ sudo apxs2 -i -c -I . apache2/mod_auth_oid_file.c
$ sudo apxs2 -i -c -I . apache2/mod_auth_oid_ldap.cConfiguración
Sección del Servidor
Los siguientes módulos estándar de Apache son requeridos:
- mod_ssl (proporciona rutinas de cifrado utilizadas por mod_auth_oid)
- mod_proxy (proporciona funciones para mod_auth_oid para enviar solicitudes a los Proveedores de OpenID)
- mod_include (proporciona renderizado de páginas shtml)
Habilita los módulos en la sección de configuración global de tu Apache. Ajusta la ubicación del archivo de acuerdo con la estructura de tu sistema de archivos. También es importante que los módulos se carguen después de mod_ssl. Por lo tanto, coloca estas líneas al final del bloque LoadModule de tu Apache. Descomenta las dos últimas líneas con los módulos de mapeo si también tienes la intención de usarlos. Si tu distribución tiene un estilo individual para cargar módulos, por favor hazlo de acuerdo con sus instrucciones (por ejemplo, coloca las siguientes líneas en un archivo que se incluya automáticamente si se encuentra en un directorio específico como modules-enabled o similar.
LoadModule parp_module /usr/lib64/apache2/mod_parp.so
LoadModule auth_oid_module /usr/lib64/apache2/mod_auth_oid.so
# LoadModule auth_oid_file_module /usr/lib64/apache2/mod_auth_oid_file.so
# LoadModule auth_oid_ldap_module /usr/lib64/apache2/mod_auth_oid_ldap.soIntenta reiniciar tu servidor. Si el módulo se carga correctamente, debería informarse en el error.log del servidor:
[Sun Nov 06 12:10:59 2011] [notice] Apache/2.2.17 (Linux/SUSE) mod_ssl/2.2.17 OpenSSL/1.0.0c mod_auth_oid/2.0 configurado -- reanudando operaciones normalesSección VirtualHost
Ahora es el momento de preparar la configuración específica para proteger tu aplicación. Edita la configuración de tu VirtualHost. Por supuesto, debería ser tu VirtualHost https ya que tratamos con seguridad aquí. Y reemplaza mi OpenID YOURNAME con tu propio OpenID, de lo contrario, YOURNAME podría robar tus joyas de la corona algún día. ;) Si deseas usar Google como tu proveedor de OpenID, debes seguir un camino ligeramente diferente y agregar un AOID_UserPattern, porque Google utiliza el enfoque de Identidad Dirigida con OpenID opacos por sitio. En el último capítulo de este cómo hacerlo, llamado Acotando el espacio de nombres de tus proveedores de OpenID preferidos, se explica la directiva de configuración con un ejemplo de Google.
Asumimos que el recurso que queremos proteger es la ubicación /private y el manejador de autenticación se encuentra en /aoid. Las secciones a continuación están comentadas para indicar lo que debes hacer.
# Una referencia completa de todas las opciones de configuración disponibles
# está disponible en: http://auth-openid.sourceforge.net/
# Precaución: Habilitar en CA's de confianza colocándolos en cacerts
# Enlazarlos a nombres hash como se describe en la documentación de Apache
# http://httpd.apache.org/docs/2.2/mod/mod_ssl.html#sslproxycacertificatepath
SSLProxyEngine on
SSLProxyCACertificatePath /etc/ssl/cacerts
# usar la bandera httponly previniendo ataques XSS a la cookie de sesión
BrowserMatch "Mozilla.*Firefox/(3|4)" HttpOnlyCookie
BrowserMatch "MSIE [6789]" HttpOnlyCookie
BrowserMatch "Opera/(10|9\.[56789])" HttpOnlyCookie
BrowserMatch Secure SecureCookie
# configuraciones base de mod_auth_oid
AOID_Realm /
AOID_StartPage /private/index.html
AOID_LogLevel info
AOID_LoginPath /aoid/login
AOID_LoginSuffix .shtml
AOID_Timeout 300
AOID_CookieName AJESSIONID
# Mapeo de Usuarios OpenID. Posibilidades adicionales se describen
# en el Capítulo "Mapeo de archivo local" de la Página de Howtoforge
# usuarios permitidos/conocidos REEMPLAZAR CON TU OPENID
AOID_User http://YOURNAME.myopenid.com/ YOURNAME
# Hacer cumplir la autenticación de usuario mod_auth_oid de la siguiente ubicación
AuthType OpenID
Require valid-user
# página de inicio de sesión mod_auth_oid
# habilitar SSI para la página de inicio de sesión (requiere mod_include)
Options Includes
AddType text/html .shtml
AddOutputFilter INCLUDES .shtml
Archivos
Ahora crea un directorio llamado private en el DocumentRoot de tu VirtualHost, que incluya el contenido que deseas proteger. Como ejemplo, agrega un archivo index.html que diga: “¡Sí!! mod_auth_oid es genial y hackeé 127.0.0.1!.
Además, necesitas una página de inicio de sesión en el directorio aoid que también esté en el DocumentRoot. Como inicio, puedes usar la página SHTML de muestra del directorio htdocs en el tarball. Simplemente cópiala también en tu htdocs. Verifica los permisos de los archivos recién creados, si coinciden con las preferencias de tu servidor web.
Ahora puedes reiniciar tu Apache una vez más. Por favor, revisa el error.log para ver que todo esté bien.
Prueba Tu Instalación
Ahora abre tu navegador. Si has hecho todo correctamente y tu Apache también lo hace, entonces deberías ver una página de inicio de sesión cuando apuntas tu navegador a la siguiente URL: https://YOURHOST/private/index.html
Selecciona tu proveedor y envía. El módulo te redirigirá a tu proveedor donde iniciarás sesión, y si fue exitoso, serás enviado de regreso a tu aplicación privada. Si eliges Google, simplemente envía el Identificador OP propuesto, en los otros dos casos ingresa tu OpenID en la parte resaltada. Más adelante en el cómo hacerlo se describe una solución mucho más conveniente para una página de inicio de sesión con un aspecto atractivo.
Depuración En Caso De Que Algo Salga Mal
En el improbable caso de que algo no funcione como se esperaba, tienes varias indicaciones sobre lo que podría estar mal en el error.log de tu servidor Apache. Los mensajes de registro deberían indicar qué falla. Una lista detallada de los posibles códigos de error y cómo habilitar un nivel de registro más alto se puede encontrar en la Página de mod_auth_oid.
Opciones Adicionales
Página de Inicio de Sesión Elegante
Asumo que eres como yo, y una de las primeras cosas que te gustaría ver es una página de inicio de sesión con buen aspecto en el navegador. ¿Algo como esto se ve lo suficientemente genial para tu gusto?

Esta página de inicio de sesión de aspecto profesional fue creada con el Proyecto de Código Abierto openid-selector, que es una forma amigable de seleccionar un OpenID.
Después de generar la página de inicio de sesión, debe mejorarse con el contenido de inclusión shtml de mod_auth_oid. He añadido la parte de renderizado de errores de la página de inicio de sesión original a la página html generada por openid-selector. Mi ejemplo de la página personalizada se puede descargar aquí.
Mapeo de Identificadores de Usuario Local
Si también compilaste el módulo mod_auth_oid_file, entonces también puedes mapear tus registros de identificador de usuario en un archivo local en lugar de agregarlos todos a tu archivo de configuración de Apache. Las instrucciones detalladas se pueden encontrar aquí.
Lee el siguiente capítulo para agregar el registro de usuarios por sí mismos con mapeo de archivos locales de una sola vez.
Administración de Usuarios Por Sí Mismos Un Mapeo de OpenID A Identificadores de Usuario Local
Suponiendo que ya tienes una administración de usuarios en su lugar que se basa en los archivos .htpasswd de Apache, puedes usar el siguiente fragmento de configuración para mejorarlo, de modo que los usuarios puedan registrar cuentas de OpenID a sus cuentas locales. Copia el archivo file_mapper.html del tarball en tu htdocs.
# Sección Virtual Host
AOID_File_DB /etc/apache2/mapdb
AOID_File_AdminPage /usr/local/apache2/htdocs/file_mapper.html
# Ubicación de administración de perfiles
# Ajusta la ruta del archivo de acuerdo con tu archivo .htpasswd existente
AuthUserFile /srv/data/.htpasswd
AuthName 'Ingresa tu Nombre de Inicio de Sesión: Cancela para registrarte si no tienes uno.'
AuthType Basic
Require valid-user
SetEnvIf Request_Method POST parp
SetEnvIf Request_Method GET parp
SetHandler auth-oid-file
AOID_File_UserOnly on
Ahora, mod_auth_oid_file crea un archivo mapdb donde almacena la relación entre cuentas de OpenID y cuentas locales .htpasswd.
Consideraciones de Seguridad
Documento de Descubrimiento de Parte Confiable
OpenID recomienda alojar un Documento de Descubrimiento de Parte Confiable que indique una dirección return_to adecuada para el Proveedor de OpenID. Yahoo indicará que tu sitio no es de confianza si no proporcionas dicho documento. Más información se puede encontrar aquí.
Guarda un documento llamado openid.xrd en el DocumentRoot de tu sitio. El contenido debería verse similar al siguiente ejemplo. Ajusta según tu configuración.
http://specs.openid.net/auth/2.0/return_to
https://YOUR_HOST_HERE/aoid/login
El documento debe ser referenciado enviando un encabezado especialmente elaborado con cada respuesta HTTP o puede incluirse en el documento de nivel superior del sitio.
Variante 1 anúncialo a través de encabezado (recomendado)
LoadModule headers_module /usr/lib/apache2/modules/mod_headers.so
# .......
Header set X-XRDS-Location https://YOUR_HOST_HERE/openid.xrdVariante 2 anúncialo en la sección head del documento html de nivel superior
....
....Protección Contra Ataques DoS Y Otros Tipos De Ataques
Los ataques DoS y el engaño de solicitudes entre sitios son un gran problema hoy en día. Puedes proteger tu sitio de manera eficiente contra ataques DoS con otro Módulo de Código Abierto, llamado mod_qos. Este módulo es una navaja suiza cuando se trata de proteger tu servidor de varios tipos de ataques. El siguiente ejemplo de configuración muestra una configuración básica que protege tu sitio de ataques DoS y engaños de solicitudes entre sitios en la página de auto administración.
# sección del servidor
LoadModule qos_module /usr/lib/apache2/modules/mod_qos.so
# maneja conexiones de hasta 100000 IPs diferentes
QS_ClientEntries 100000
# permitirá solo 50 conexiones por IP
QS_SrvMaxConnPerIP 50
# el número máximo de conexiones TCP activas está limitado a 256
MaxClients 256
# desactiva keep-alive cuando el 70% de las conexiones TCP están ocupadas:
QS_SrvMaxConnClose 180
# velocidad mínima de solicitud/respuesta (negar clientes lentos que bloquean el servidor, es decir, slowloris manteniendo conexiones abiertas sin solicitar nada):
QS_SrvMinDataRate 120 1500 400
# y limitar encabezados y cuerpo de solicitud (cuidado, eso limita cargas y solicitudes post también):
QS_SrvMaxConnClose 70%
LimitRequestFields 30
QS_LimitRequestBody 102400
QS_ClientEventBlockCount 20 300
QS_SetEnvIfStatus 400 QS_Block
QS_SetEnvIfStatus 401 QS_Block
QS_SetEnvIfStatus 403 QS_Block
QS_SetEnvIfStatus 404 QS_Block
QS_SetEnvIfStatus 405 QS_Block
QS_SetEnvIfStatus 406 QS_Block
QS_SetEnvIfStatus 408 QS_Block
QS_SetEnvIfStatus 411 QS_Block
QS_SetEnvIfStatus 413 QS_Block
QS_SetEnvIfStatus 414 QS_Block
QS_SetEnvIfStatus 417 QS_Block
QS_SetEnvIfStatus 500 QS_Block
QS_SetEnvIfStatus 503 QS_Block
QS_SetEnvIfStatus 505 QS_Block
QS_SetEnvIfStatus QS_SrvMinDataRate QS_Block
QS_SetEnvIfStatus NullConnection QS_Block
QS_SrvMaxConnExcludeIP 127.0.0.1
# Protección CSRF del Formulario de Auto Registro estableciendo
# cuatro hitos para la administración de perfiles
QS_MileStone deny "^GET /OpenIdLogin"
QS_MileStone deny "^GET /OpenIDRegistration"
QS_MileStone deny "^GET /profile"
QS_MileStone deny "^POST /profile"Acotando El Espacio De Nombres De Tus Proveedores De OpenID Preferidos
Puedes limitar qué proveedor de OpenID aceptas para la autenticación de tu sitio web con la directiva de configuración AOID_UserPattern. Los siguientes dos ejemplos te dan una idea general de cómo construir expresiones regulares para ese propósito.
# Sección VirtualHost
# Permitir solo OpenID de Google
AOID_UserPattern "^(https://www\.google\.com/accounts/o8/id\?id=.*)$" "$1"
# Permitir solo OpenID de my.company.com y usar solo una parte de él para mapearlo a un usuario local.
AOID_UserPattern "^https://my\.company\.com/([a-z]{1})[a-z]+\.([a-z]{2})[a-z]+$" "$1$2"Palabras Finales
Gracias por leer este tutorial. Espero que tu instalación haya sido directa. Te deseo que muchos usuarios se beneficien de este módulo y espero que haya sido divertido para ti instalarlo. Si deseas mantenerte informado sobre lo que está sucediendo con el módulo, puedes suscribirte a nuestra página de facebook de mod_auth_oid.
Créditos: Quiero agradecer a Pascal Buchbinder, quien me guió para mejorar este módulo de Apache y enriquecerlo con el método identifier_select. Él es el autor de varios módulos de Apache como mod_qos, mod_sslcrl, mod_parp y otros.
Recibe nuevas publicaciones en tu bandeja de entrada.
No spam. Cancela la suscripción en cualquier momento.