Question

Je pense que nous pouvons autoriser Firefox à envoyer des données NTLM à des sites SharePoint pour effectuer une authentification automatique, ce qui est réalisable avec IIS.

J'aimerais faire la même chose avec un site interne Rails.

Quelqu'un sait-il que je pourrais authentifier les informations utilisateur de type NTLM via une configuration Apache / mongrel (à condition bien sûr qu'elle est déjà exécutée sur une machine Windows dans un domaine Active Directory)?

Était-ce utile?

La solution

Je suppose que vous avez déjà défini les en-têtes HTTP à envoyer pour permettre à Firefox et à IE de renvoyer les éléments d'authentification NTLM, et vous avez simplement besoin de les gérer côté serveur?

Vous pouvez utiliser certaines des bibliothèques win32 de ruby ?? pour accéder aux fonctions d’authentification Windows sous-jacentes qui gèrent le NTLM.

Je suggérerais que le chemin de moindre résistance pourrait être de voir s'il existe un composant COM qui peut effectuer l'authentification pour vous et, le cas échéant, de l'utiliser à l'aide de la bibliothèque ruby ??Win32OLE.

S'il n'y a pas de composant COM, vous pourrez peut-être trouver quelque chose dans l'une de ces autres bibliothèques pouvant appeler les méthodes natives win32.

Si vous ne trouvez pas cela, vous devrez écrire une extension ruby ??C. Je l'ai fait sous Linux, et étendre ruby ??est assez facile, mais vous pouvez trouver l'API d'authentification de Microsoft un peu pénible.

J'espère que cela vous permettra de démarrer sur la bonne voie: -)

Autres conseils

J'ai créé le tutoriel sur comment installer le module mod_ntlm patché pour Apache sous Linux et comment passer le nom d'utilisateur authentifié NTLM à Rails et comment créer une session Rails à partir de celui-ci. Par conséquent, vous n’avez pas besoin du serveur Windows pour exécuter l’application Rails.

Vous y trouverez également comment activer l'authentification NTLM automatique dans Firefox & # 8212; entrez " about: config " dans le champ Emplacement, puis recherchez "network.automatic-ntlm-auth.trusted-uris". Vous pouvez y entrer les serveurs pour lesquels vous souhaitez utiliser l'authentification NTLM automatique.

Bit d’informations supplémentaires au cas où quelqu'un tomberait par hasard dessus.

Je voulais faire quelque chose qui, à mon avis, devrait être assez simple: extraire le nom d'utilisateur Windows de l'utilisateur à l'aide de NTLM à partir d'une application Rails s'exécutant sur Mongrel / Windows (InstantRails en fait). Après avoir écrit le code de base, gérez les différentes opérations d'établissement de liaison (à l'aide de l'excellente bibliothèque NTLMRuby à l'adresse http://rubyforge.org/ projects / rubyntlm / ) et l’avoir fonctionné à merveille dans Firefox, j’étais un peu frustré de constater que IE ne fonctionnait pas.

Mongrel ne prend pas en charge les connexions persistantes lors de l’échange de messages type1 / 2/3 (du moins de manière native, je pense qu’il existe un correctif pour le hack), ce que IE exige et Firefox se débrouille sans.

Ainsi, authentifier un serveur Rails sous Windows par rapport à un service NTLM distant (par exemple, Sharepoint ou un autre site Web) est relativement simple, mais authentifier un navigateur IE par rapport à un serveur Rails fonctionnant sous Windows n'est pas tellement avec Mongrel. IIS serait une option, tout comme Apache de base avec FastCGI. Le premier se sent un peu maladroit et le dernier ne sera pas aussi rapide que Mongrel.

Vous pouvez également utiliser le module Apache ntlm , qui devrait transmettre un en-tête à votre application avec le nom d'utilisateur de l'utilisateur authentifié. Ce module a l'air un peu vieux, mais suggère d'autres modules qui pourraient répondre à vos besoins.

Vieille question que je connais mais je suis tombé sur cette question en cherchant une réponse similaire.

vous pouvez utiliser les méthodes décrites ici ( http://blog.rayapps.com/2008/12/02/ntlm-windows-domain-authentication-for-rails-application/ ). Cependant, mod_ntlm est destiné à l'authentification Windows sur un ordinateur UNIX / Linux. mod_auth_sspi est ce dont vous aurez besoin pour l'authentification WinNT d'Apache sous Windows.

Ce projet en particulier semble prometteur et recherche des contributeurs:

Je n'ai pas encore essayé cela. Pour le moment, je prévois de mettre en œuvre la solution de Raimonds car elle semble avoir beaucoup de succès.

Découvrez Gaufre . Il fournit l'authentification unique sous Windows aux serveurs Java à l'aide de l'API Win32. Il existe un certain nombre de filtres implémentés (servlet, vanne tomcat, sécurité du ressort).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top