2008-12-23 32 views
12

Supongamos que no sé mucho sobre Kerberos, solo los conceptos básicos.Autenticación de Kerberos en PHP

tengo ...

  • Debian Linux 2.6 Servidor web
    • Apache 2.2
      • mod_auth_kerb/5,3
      • PHP/5,2
  • un (trabajo) de Kerberos Realm
  • cliente de Windows
    • Firefox 3
    • una revisión en línea de identidad "[email protected]" en el MIT Identidad Network Manager

Cómo hacer ¿Utilizo esta información en un script PHP para no tener que iniciar sesión en el sitio web si el visitante tiene un ticket kerberos como ese? No quiero que Apache maneje la autenticación. Necesito saber qué usuario está accediendo al sitio a través de PHP.

¿Es esto posible? ¿Si es así, cómo?

Lo que he descubierto hasta ahora: Tengo que "enable" the domain in Firefox.

Sin embargo eso es todo ...

Respuesta

3

no estoy seguro de si esto ayuda, pero parece Apache PHP enviará la información de nombre de usuario con el paquete modauthkerb si utiliza el parámetro KrbSaveCredentials. Usted debe obtener dos variables globales en php:

$_SERVER['REMOTE_USER'] 
$_SERVER['KRB5CCNAME'] 

http://archives.postgresql.org/pgsql-admin/2004-08/msg00144.php parece que han conseguido este trabajo.

De esta manera, si puede ver lo que el usuario es, realmente no es un requisito que php realmente haga la autenticación.

1

mod_auth_kerb se encargará de la autenticación real. Después de eso, configurará variables ambientales REMOTE_USER y KRB5CCNAME. Tenga en cuenta que hay algunas advertencias:

  • mod_auth_kerb puede realizar la traducción entre el principal de Kerberos y el nombre de usuario local si la opción Krb5AuthToLocal está habilitada.
  • Si Krb5AuthToLocal está habilitado, mod_auth_kerb llamará a la biblioteca Kerberos para realizar la traducción de un nombre autenticado a un nombre local ya que Kerberos principal no es siempre el mismo que el usuario real en el sistema operativo (puede asignar directores a nombres de usuario)
  • Cuando MIT Kerberos está en uso, esta asignación se realiza con la ayuda de las reglas auth_to_local en /etc/krb5.conf, consulte la página del manual krb5.conf para obtener más información.
  • mod_auth_kerb tiene un error que el nombre local resultante no debe tener un nombre más largo que el principal en sí.Esto suele ser cierto para los directores de un dominio predeterminado, ya que se presentan sin la parte de dominio, es decir, 'usuario' en lugar de 'usuario @ REALM'. Sin embargo, si tiene varios dominios de confianza, los usuarios de los dominios no predeterminados se mostrarán como '[email protected]' y luego mod_auth_kerb se volverá loco. Este error debería solucionarse en Fedora 18+ y RHEL6.5, no estoy seguro acerca de Debian ya que mod_auth_kerb upstream está un poco muerto.
  • Por lo tanto, su variable REMOTE_USER contendrá el principal de Kerberos o el nombre de usuario local, dependiendo de cómo se configuró mod_auth_kerb. Si su aplicación se basa en el hecho de que el valor REMOTE_USER debe ser un usuario real del sistema existente, deberá asegurarse de que la opción Krb5AuthToLocal esté habilitada y que dichos usuarios estén visibles en el sistema (a través de winbind o sssd).

Para su caso, le recomiendo mirar excelente manera de por Tom McLaughlin: http://blogs.freebsdish.org/tmclaugh/2010/07/15/mod_auth_kerb-ad-and-ldap-authorization/

Cuestiones relacionadas