Comment puis-je utiliser l'authentification NTLM avec Active Directory
Je suis en train de mettre en œuvre l'authentification NTLM sur un de nos sites internes et tout fonctionne. La seule pièce du puzzle, je n'ai pas est comment faire pour prendre les informations de NTLM et l'authentification avec Active Directory.
Il y a un bonne description de l'authentification NTLM et la le chiffrement utilisé pour les mots de passe, que j'ai utilisé pour implémenter cela, mais je ne suis pas sûr de la façon de vérifier si le mot de passe utilisateur est valide.
Je suis à l'aide de ColdFusion, mais une solution à ce problème peut être dans n'importe quel langage (Java, Python, PHP, etc).
Edit:
Je suis à l'aide de ColdFusion sur Redhat Enterprise Linux. Malheureusement nous ne pouvons pas utiliser IIS pour gérer cela et au lieu d'avoir à écrire ou d'utiliser un outil 3ème partie pour cela.
Mise à jour - j'ai eu ce travail et voici ce que j'ai fait
Je suis allé avec le JCIFS de la bibliothèque de samba.org.
Noter que la méthode ci-dessous ne fonctionne qu'avec NTLMv1 et NE PAS travail avec NTLMv2. Si vous ne parvenez pas à utiliser NTLMv1 vous pouvez essayer Jespa, qui prend en charge l'authentification NTLMv2, mais n'est pas open source, ou vous pouvez utiliser Kerberos/SPNEGO.
Voici mon web.xml:
<web-app>
<display-name>Ntlm</display-name>
<filter>
<filter-name>NtlmHttpFilter</filter-name>
<filter-class>jcifs.http.NtlmHttpFilter</filter-class>
<init-param>
<param-name>jcifs.http.domainController</param-name>
<param-value>dc01.corp.example.com</param-value>
</init-param>
<init-param>
<param-name>jcifs.smb.client.domain</param-name>
<param-value>CORP.EXAMPLE.COM</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>NtlmHttpFilter</filter-name>
<url-pattern>/admin/*</url-pattern>
</filter-mapping>
</web-app>
Maintenant toutes les URLs correspondantes /admin/*
va exiger l'authentification NTLM.
Vous devez vous connecter pour publier un commentaire.
Ce que vous êtes vraiment se poser est: Est-il possible de valider le "WWW-Authenticate: NTLM" jetons soumis par IE et d'autres clients HTTP lors de l'authentification Unique (SSO). Le SSO est lorsque l'utilisateur entre son mot de passe d'un "single" du temps quand ils ne les touches Ctrl-Alt-Del et le poste de travail se souvient, et l'utilise en tant que nécessaire de manière transparente l'accès à d'autres ressources sans demander confirmation à l'utilisateur un mot de passe à nouveau.
Noter que Kerberos, NTLM comme, peut également être utilisé pour mettre en œuvre l'authentification unique. Lorsqu'il est présenté avec un "WWW-Authenticate: Négocier" en-tête, IE et d'autres navigateurs envoyer SPNEGO enveloppé Kerberos et /ou NTLM jetons. Plus sur cela plus tard, mais je vais d'abord répondre à la question posée.
Le seul moyen de valider un NTLMSSP mot de passe "réponse" (comme ceux encodés en "WWW-Authenticate: NTLM" en-têtes soumis par IE et d'autres navigateurs) est un NetrLogonSamLogon(Ex) DCERPC appel avec le service NETLOGON du contrôleur de domaine Active Directory qui est une autorité, ou a une "confiance" auprès d'une autorité, pour le compte cible. En outre, la sécurisation de l'accès réseau de communication, un Canal Sécurisé de cryptage doit être utilisé et il est nécessaire de Windows Server 2008.
Inutile de dire, il y a très peu de paquets de mettre en place la nécessaire NETLOGON les appels de service. Les seuls que je connais sont:
Windows (bien sûr)
Samba - Samba est un ensemble de programmes de logiciel pour UNIX qui met en œuvre un certain nombre de protocoles Windows y compris la NETLOGON les appels de service. En fait, la Samba 3 a un démon pour ce qu'on appelle "winbind" que d'autres programmes comme le PAM et les modules d'Apache peuvent (et le font) interface avec. Sur une Red Hat système, vous pouvez faire un
yum install samba-winbind
etyum install mod_auth_ntlm_winbind
. Mais c'est la partie la plus facile d'établissement de ces choses est une autre histoire.Jespa - Jespa (http://www.ioplex.com/jespa.html) est un 100% bibliothèque Java qui implémente toutes les NETLOGON les appels de service. Il fournit également des implémentations d'interfaces Java standard pour l'authentification des clients de diverses façons: avec un HTTP Filtre de Servlet, SASL serveur, JAAS LoginModule, etc.
Méfiez-vous qu'il y a un certain nombre d'authentification NTLM accepteurs de ne pas mettre en service NETLOGON appels, mais au lieu de faire quelque chose d'autre qui a finalement conduit à l'échec dans un scénario ou d'une autre. Par exemple, pendant des années, la façon de le faire en Java a été avec le NTLM l'authentification HTTP Filtre de Servlet à partir d'un projet appelé JCIFS. Mais ce Filtre utilise un man-in-the-middle technique qui a été responsable de longue date de "hoquet bug" et, plus important, il ne prend pas en charge l'authentification NTLMv2. Pour ces raisons et d'autres, il est prévu pour être retiré de JCIFS. Il y a plusieurs projets qui ont été involontairement inspiré par ce package sont maintenant également vouée à l'échec. Il y a aussi beaucoup de fragments de code posté dans le forum Java qui décodent l'en-tête jeton et arracher le domaine et le nom d'utilisateur mais ne font absolument rien pour vraiment valider le mot de passe réponses. Qu'il suffise de dire, si vous utilisez l'un de ces fragments de code, vous pourriez aussi bien vous promener avec votre pantalon vers le bas.
Comme je l'ai échappé à l'heure, NTLM est un seul de plusieurs Fenêtres de Sécurité, les Fournisseurs de Soutien (SSP). Il y a aussi un recueil de la SSP, Kerberos SSP, etc. Mais la négociation de la SSP, qui est également connu comme SPNEGO, est généralement le fournisseur que MS utilise dans leur propre protocole de clients. La négociation de la SSP en fait juste négocie le ou Kerberos et NTLM SSP SSP. Notez que Kerberos ne peut être utilisé si le serveur et le client ont des comptes dans le domaine cible et le client peut communiquer avec le contrôleur de domaine suffisamment pour acquérir un ticket Kerberos. Si ces conditions ne sont pas remplies, le NTLM SSP est utilisé directement. Donc, NTLM est pas obsolète.
Enfin, certaines personnes ont mentionné à l'aide d'un LDAP "liaison simple" comme un coin de la validation du mot de passe de service. LDAP n'est pas vraiment conçu comme un service d'authentification et pour cette raison, il n'est pas efficace. Il n'est également pas possible de mettre en œuvre l'authentification unique à l'aide de LDAP. L'authentification unique nécessite l'authentification NTLM ou SPNEGO. Si vous pouvez trouver un NETLOGON ou SPNEGO accepteur, vous devez utiliser à la place.
Mike
Ce que je comprends.
NTLM est l'un de IIS construit dans les méthodes d'authentification. Si l'Hôte est enregistré sur le domaine de la dite active directory, il devrait être automatique. Une chose à surveiller est le nom d'utilisateur doit être dans un des deux formats.
Si vous essayez d'aller à l'encontre d'un active directory, vous devriez être en utilisant un des formulaires de style authentification et de quelques LDAP code.
Si vous essayez de faire de l'Intranet n'est Pas Zéro Login chose avec IIS authentification Intégrée
La ModNTLM source pour Apache peut vous fournir les pointeurs.
Si possible, vous devriez envisager d'utiliser Kerberos à la place. Il vous permet de vous authentifier Apache contre la maladie d'aujeszky, et c'est une participation plus active de l'espace de projet que NTLM.
Découvrez Gaufre. Il met en œuvre l'authentification unique pour Java serveurs à l'aide de l'API Win32. Il y a de servlet tomcat soupape, ressort de sécurité et d'autres filtres.
Vous pouvez résoudre le Firefox authentification contextuel en effectuant les étapes suivantes dans Firefox:
Hm, je ne suis pas sûr de ce que vous essayez d'accomplir.
Généralement de la mise en œuvre de l'authentification NTLM sur un site interne est aussi simple que de décocher l'option "Activer l'Accès Anonyme" dans "Authentification et Contrôle d'Accès" à la "Sécurité de Répertoire" onglet de propriétés au site web dans IIS. Si c'est désactivée, votre web application les utilisateurs pourront visualiser une pop-up NTLM boîte de dialogue.
Il n'y a pas besoin pour vous d'écrire du code qui s'interface avec Active Directory. IIS se charge de l'authentification pour vous.
Pouvez-vous être plus précis sur ce que vous essayez de faire?
je suppose que vous êtes désireux obtenir quelques-uns des attributs qui sont imputées sur le compte LDAP sur le rôle de département, etc.
pour coldfusion vérifier cela http://www.adobe.com/devnet/server_archive/articles/integrating_cf_apps_w_ms_active_directory.html
et la cfldap tag http://livedocs.adobe.com/coldfusion/6.1/htmldocs/tags-p69.htm#wp1100581
Comme à d'autres langues, d'autres le feront à leurs places respectives Api