2008-09-29 18 views
6

Creo que podemos permitir que Firefox envíe datos NTLM a sitios de SharePoint para realizar la autenticación automática, y creo que esto es factible con IIS.Recuperar datos de usuario de NTLM Active Directory en Rieles sin IIS

Me gustaría hacer lo mismo con un sitio interno de Rails.

¿Alguien sabe de qué manera podría autenticar la información de usuario de tipo NTLM a través de una configuración de Apache/mongrel (siempre que ya se ejecute en un cuadro de Windows dentro de un dominio de Active Directory)?

Respuesta

2

Supongo que ya ha calculado qué encabezados HTTP necesita enviar para que Firefox y IE envíen de vuelta las autenticaciones NTLM, y solo necesitan manejar eso en el lado del servidor.

Puede usar algunos de los ruby ​​win32 libraries para acceder a las funciones subyacentes de autenticación de Windows que manejan el NTLM.

Sugeriría que la ruta de menor resistencia podría ser ver si hay un componente COM que puede hacer la autenticación por usted, y si es así, usarlo usando la biblioteca de ruby ​​Win32OLE.

Si no hay un componente COM, es posible que pueda encontrar algo en una de esas otras bibliotecas que pueden invocar los métodos win32 nativos para usted.

Si no puede encontrar eso, tendrá que escribir una extensión de rubí C. He hecho esto en Linux, y extender ruby ​​es bastante fácil, pero es posible que la API de autenticación de Microsoft sea un poco dolorosa.

la esperanza de que podrá iniciar en el camino correcto :-)

2

También es posible usar el Apache ntlm module, que debe pasar un encabezado en adelante a su aplicación con el nombre de usuario del usuario autenticado. Ese módulo parece un poco viejo, pero sugiere algunos otros módulos que pueden adaptarse a sus necesidades.

10

Creé tutorial on how to install patched mod_ntlm module para Apache en Linux y cómo pasar el nombre de usuario autenticado NTLM a Rails y cómo crear la sesión de Rails a partir de eso. Por lo tanto, como resultado, no necesita el servidor de Windows para ejecutar la aplicación Rails.

Allí puede encontrar también cómo habilitar la autenticación automática NTLM en Firefox - ingrese "about: config" en el campo de ubicación y luego busque "network.automatic-ntlm-auth.trusted-uris". Allí puede ingresar servidores para los cuales le gustaría usar autenticación automática NTLM.

+0

Esto es increíble. –

4

Un poco de información adicional en caso de que alguien tropiece con esto.

Quería hacer algo que pensé que debería ser bastante simple: extraer el nombre de usuario de windows de los usuarios utilizando NTLM desde una aplicación Rails que se ejecuta en Mongrel/Windows (InstantRails en realidad). Después de haber escrito el código básico, administro las diversas operaciones de handshaking (usando la gran biblioteca NTLMRuby al http://rubyforge.org/projects/rubyntlm/) y habiendo funcionado maravillosamente en Firefox, me sentí algo frustrado al encontrar que IE no funcionaba.

Mongrel no es compatible con keep-alives durante el intercambio de mensajes type1/2/3 (al menos de forma nativa, creo que hay un hack/fix), que IE exige y Firefox se las arregla. Así que autenticar un servidor Rails que se ejecuta en Windows contra un servicio NTLM remoto (por ejemplo Sharepoint u otro sitio web) es razonablemente sencillo, pero autenticar un navegador IE contra un servidor Rails que se ejecuta en Windows no tanto con Mongrel. IIS sería una opción, como podría ser Apache básico con FastCGI. El primero se siente un poco torpe y el segundo no será tan rápido como Mongrel.

0

Echa un vistazo Waffle. Proporciona SSO en servidores de Windows a Java que utilizan Win32 API. Hay una serie de filtros implementados (servlet, tomcat valve, spring-security).

Cuestiones relacionadas