es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo obtener el nombre de usuario después de una autenticación exitosa de Kerberos utilizando NGINX?

He seguido este tutorial (https://techexpert.tips/nginx/nginx-kerberos-authentication/) para crear una “página especial” /test en mi servidor NGINX que requiere autenticación exitosa de Kerberos para acceder a ella. Entonces, esto funciona. El problema es que quiero que la aplicación sepa quién acaba de autenticarse con éxito en el sitio para poder mostrarle su información específica. Entonces, por ejemplo, en lugar de mostrar esta página a todos:
Prueba de autenticación de Nginx
Quiero tener una página que agregue el nombre de usuario autenticado de Kerberos a la salida o emita una cookie con el nombre de usuario autenticado en ella. Esto debe admitir múltiples usuarios que accedan al sitio web simultáneamente para que cada uno tenga acceso a su propia información.

Debo agregar que cuando sigo la /var/log/nginx/access.log, veo una línea que se escupe con dos guiones y lo que parece ser información del navegador desde el navegador que accede al sitio. Luego, después de la autenticación exitosa de Kerberos, se escupe otra línea a ese registro que tiene el nombre de usuario lleno en el segundo guión. Entonces, parece que esta información está disponible en algún lugar de nginx si solo pudiera acceder a ella. Realmente no quiero tomarlo del archivo access.log. 😉

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para mostrar el nombre de usuario de Kerberos autenticado en la salida, es necesario modificar la configuración de nginx para pasar el nombre de usuario como una variable a la aplicación web.

    Agregue la siguiente línea al archivo de configuración de nginx, debajo del bloque location /test:

    fastcgi_param REMOTE_USER $remote_user;

    Esto establecerá la variable REMOTE_USER con el nombre de usuario autenticado.

    Luego, en su aplicación web, puede acceder a esta variable para mostrar el nombre de usuario en la página.

    Para emitir una cookie con el nombre de usuario autenticado, puede usar el módulo auth_request de nginx.

    Agregue las siguientes líneas al archivo de configuración de nginx, fuera del bloque location:

    auth_request_set $user $upstream_http_remote_user;
    add_header Set-Cookie "user=$user;Path=/";
    

    Esto establecerá una cookie llamada “user” con el valor del nombre de usuario autenticado.

    En su aplicación web, puede acceder a esta cookie para mostrar el nombre de usuario y proporcionar información personal.

    Tenga en cuenta que también debe configurar su aplicación web para manejar la cookie y usarla para identificar al usuario.

    Con respecto al archivo access.log, puede utilizar la directiva log_format de nginx para registrar el nombre de usuario autenticado directamente en el archivo access.log.

    Agregue la siguiente línea al archivo de configuración de nginx, fuera del bloque location:

    log_format main '$remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent" "$remote_user"';

    Esto agregará el nombre de usuario autenticado al archivo access.log.

    Sin embargo, acceder directamente al archivo de registro puede afectar el rendimiento, especialmente si muchos usuarios acceden al sitio web simultáneamente. Usar variables o cookies es un enfoque mejor para manejar la identificación de usuarios dentro de la aplicación web.

Comments are closed.