FreeIPA4 en una aplicación PHP utilizando Web App Authentication

Escrito el 2023-05-09 por Alberto Ferrer
Tiempo de lectura: 4 minuto(s)
Etiquetas: linux sso freeipa apache php

En el universo digital en el que nos movemos hoy día, es vital que nos aseguremos de que nuestras aplicaciones web están a salvo y protegidas. ¿Y sabes qué? FreeIPA4 es nuestro superhéroe en este aspecto. Este no es un simple sistema de gestión de identidades y políticas, es un verdadero guardián que ofrece funciones estupendas como autenticación centralizada, control de acceso y supervisión de políticas de seguridad. En las siguientes líneas, vamos a explorar cómo podemos hacer que FreeIPA4 se convierta en el defensor de nuestra aplicación web PHP. Usaremos el protocolo Web App Authentication y otros módulos como los que estan listados aqui:

  • mod_auth_gssapi
  • mod_auth_kerb
  • mod_authnz_pam
  • mod_intercept_form_submit
  • mod_lookup_identity.

Para integrar la autenticación de FreeIPA4 en una aplicación PHP, siga estos pasos:

Configurar mod_auth_gssapi

El módulo mod_auth_gssapi (referencia) es un módulo de autenticación que utiliza el protocolo GSSAPI para proporcionar autenticación de inicio de sesión único (Single Sign-On) para Apache.

Edite el archivo de configuración de su sitio en Apache y asegúrese de que el módulo mod_auth_gssapi esté habilitado y configurado de la siguiente manera:

    <Location "/secure">
        AuthType GSSAPI
        AuthName "GSSAPI Single Sign On Login"
        GssapiCredStore keytab:/etc/httpd/conf/http.keytab
        GssapiCredStore client_keytab:/etc/httpd/conf/http_client.keytab
        GssapiDelegCcacheDir /var/run/httpd/clientcaches
        GssapiUseS4U2Proxy On
        GssapiImpersonate On
        GssapiUseSessions On
        Require valid-user
    </Location>

Configurar mod_intercept_form_submit

El módulo mod_intercept_form_submit (referencia) permite interceptar las solicitudes de inicio de sesión POST, lo que facilita la autenticación basada en formularios.

Habilite y configure el módulo mod_intercept_form_submit:

    <Location "/intercept">
        InterceptFormPAMService httpd
        InterceptFormLogin username
        InterceptFormPassword password
        InterceptFormURIOnSuccess /secure
        InterceptFormURIOnFail /login?fail
        AuthType Basic
        AuthName "Login"
        AuthBasicProvider PAM
        Require valid-user
    </Location>

Configurar mod_lookup_identity y mod_authnz_pam

El módulo mod_lookup_identity (referencia) se utiliza para buscar información adicional del usuario en FreeIPA. mod_authnz_pam (referencia) es un módulo que permite utilizar el servicio PAM (Pluggable Authentication Modules) para autenticar a los usuarios.

Habilite y configure los módulos mod_lookup_identity y mod_authnz_pam:

    LookupUserAttr mail REMOTE_USER_EMAIL
    LookupUserAttr givenname REMOTE_USER_FIRSTNAME
    LookupUserAttr sn REMOTE_USER_LASTNAME

    <LocationMatch ^/secure/[^/]*$>
        AuthType Basic
        AuthName "Login"
        AuthBasicProvider PAM
        AuthPAMService httpd
        Require valid-user
    </LocationMatch>

Crear una aplicación PHP

Cree un archivo index.php con el siguiente contenido:

    session_start();
    if (!isset($_SERVER['REMOTE_USER'])) {
        header('Location: /intercept');
        exit;
    }

    $_SESSION['username'] = $_SERVER['REMOTE_USER'];
    $_SESSION['email'] = $_SERVER['REMOTE_USER_EMAIL'];
    $_SESSION['firstname'] = $_SERVER['REMOTE_USER_FIRSTNAME'];
    $_SESSION['lastname'] = $_SERVER['REMOTE_USER_LASTNAME'];
    // echo variables here.

Reiniciar Apache

Es necesario realizar un reinicio del servidor Apache para implementar las nuevas configuraciones. Al completar estos pasos, la aplicación PHP quedará protegida con la autenticación de FreeIPA4, garantizando un inicio de sesión único y seguro.

La seguridad en las aplicaciones web es un aspecto primordial, y la autenticación centralizada se presenta como una estrategia efectiva para resguardar los activos digitales. Integrar la autenticación de FreeIPA4 en una aplicación PHP utilizando Web App Authentication implica ofrecer un inicio de sesión único y seguro, mejorando así la interacción del usuario y asegurando la protección de los datos.

Mediante la combinación de módulos como mod_auth_gssapi, mod_auth_kerb, mod_authnz_pam, mod_intercept_form_submit y mod_lookup_identity, se logra una solución robusta y adaptable a las necesidades de cualquier aplicación. En definitiva, esta integración permite administrar eficientemente las identidades y políticas de acceso en cualquier organización, salvaguardando sus recursos y garantizando la privacidad y seguridad de los usuarios.