Tengo una aplicación en php (una dokuwiki vaya) en la que una vez que haces login puedes crear páginas, modificar, etc. Aparte tengo otro directorio que no tiene nada que ver con la wiki pero que sólo quiero puedan acceder los usuarios autenticados a dicha wiki. ¿Qué hacer entonces? Bueno la primera aproximación es proteger todo ese árbol con un .htaccess, pero entonces a los usuarios de la wiki le volvería a pedir login y password (y posiblemente diferentes a los de la wiki) para ver ese árbol.
Quería alguna solución para que no me volviera a pedir credenciales, en plan Single Sign On. La mejor solución que encontré es mediante cookies, de la siguiente manera. Cuando alguien hace login en la wiki, creo una cookie (aparte de las que crea la propia wiki) con un nombre concreto (por ejemplo AUTHUSER) y un valor también concreto y un poco criptográfico, por razones de seguridad (por ejemplo QU1NT0BL0G). Después, en la raíz del árbol que quiero proteger, creo un .htaccess y especifico que sólo se permite acceder al directorio si el navegador manda una cookie llamada AUTHUSER con el valor QU1NT0BL0G. Veámoslo con mi ejemplo en concreto:

Creación de la cookie (en mi caso, modificación de la función auth_login del archivo ./inc/auth.php de dokuwiki):

También modifico la función auth_logoff para borrar la cookie cuando cierra la sesión:

Y creo el .htaccess en el directorio que quiero proteger:

Si alguien tiene una solución mejor (que seguro que la hay), que lo diga por favor!

PHP auth + htaccess (SSO)

Deja un comentario

Tu dirección de correo electrónico no será publicada.