2010-11-23 25 views
7

Necesito entender más acerca de SSO en una aplicación web en contra de Active Directory.¿Cómo funciona el inicio de sesión único (SSO) con PHP + Apache contra un Active Directory para la autenticación transparente?

Para simplemente preguntar al usuario el inicio de sesión para autenticarse en AD, sé que puedo utilizar algunas bibliotecas como Zend_Ldap, adLdap y así sucesivamente. Pero en este caso, el usuario aún necesita escribir el inicio de sesión dos veces. Por ejemplo: Authenticate against Active Directory/ISA from php

Que yo sepa, a utilizar para SSOtransparent login, que hay que implementar un módulo de Apache adicional. Por ejemplo: How can I implement single sign-on (SSO) using Microsoft AD for an internal PHP app?

Authenticate against ldap using PHP, active directory, while using IE/Firefox

Primero necesito saber qué módulo de Apache que necesito utilizar y por qué. En this article, por ejemplo, hay tres: mod_ntlm, mod_auth_kerb y Apache2:AuthenNTLM. Y el thosed uno era Apache2:AuthenNTLM

En el question descrito anteriormente fue la respuesta aceptada para mod_auth_sspi.

Cuando se habla de Active Directory I've got this answer, que describe el directorio activo como una implementación de ldap + kerberos + "algunas otras piezas varias".

Estoy muy confundido acerca de todos estos nombres, ya que he trabajado con nerver. ¿Alguien me puede aclararlo? (ldap, kerberos, ntlm, etc)

Finalmente, alguien me puede apuntar a la forma en la aplicación reconoce el usuario autenticado (de DC). ¿Es solo por el nombre de usuario pasado con algo así como $_SERVER['REMOTE_USER']? Cualquier contraseña es enviada? ¿Cómo envía el navegador estos encabezados adicionales? ¿Hay alguna configuración local que deba hacerse en cada estación de trabajo?

+0

Esta pregunta es casi idéntica a http://stackoverflow.com/questions/1003751/how-can-i-implement-single-sign-on-sso-using-microsoft-ad-for-an- internal-php –

Respuesta

13

Autenticación es un desastre confuso. Aquí hay algunos antecedentes.

  • LDAP: LDAP es un protocolo para comunicar información del directorio de usuarios. También puede manejar la autenticación, pero no es transparente (SSO).

  • NTLM: NTLM es el SSO de Microsoft integrado en IE, ActiveDirectory e IIS. La versión original de NTLM es muy insegura, por lo que se implementó NTLMv2 para solucionar los problemas de seguridad en NTLM. El NTLM original está deshabilitado de forma predeterminada en Windows Vista y posterior.

  • Kerberos: Kerberos es un estándar abierto que es muy seguro y está diseñado para ofrecer una autenticación sin fisuras (SSO). ActiveDirectory admite una versión de Kerberos.

En cuanto a los módulos de Apache que se pueden utilizar para implementar estos protocolos, que incluía una lista bastante buena de ellos.

  • mod_ntlm: Se trata de un módulo de Apache que se ejecuta en Linux y es compatible con el NTLM original (no NTLMv2).

  • mod_auth_kerb: Este es un módulo de Apache que implementa Kerberos.

  • mod_auth_sspi: Este es un módulo de Apache para Windows que admite el NTLM original (no NTLMv2).

  • Apache2: AuthenNTLM: Este es un módulo Perl que maneja NTLM. No sé si es compatible con NTLM y NTLMv2.

  • mod_auth_ntlm_winbind: Este es un módulo de Apache que interactúa con la autenticación de Samba.

1

Single-Sign-On y Shared-Authentication son related, but different, concepts. Creo que puedes estar confundiéndolos. Si quieres un SSO verdadero, mira en CAS.

LDAP y AD son protocolos para almacenar usuarios y datos de la organización. No son útiles para realizar la autenticación real en la web, pero puede usarlos detrás de un SSO (como CAS) como la "base de datos".

+0

Esto es para una Intranet, por lo que el usuario conectado a la red puede autenticarse automáticamente en la Intranet. Ahora tengo otro método 'CAS'. Me gustaría saber la relación con los métodos proporcionados en la pregunta. –

Cuestiones relacionadas