Autentification (login + passwd) sur un domaine windows nt

5/5 (4 avis)

Snippet vu 17 068 fois - Téléchargée 32 fois

Contenu du snippet

Cette fonction permet d'authentifier un utilisateur sur un domaine Windows NT en utilisant les services LDAP.

Source / Exemple :


Function LDAPIdentif (strDC, strDomain, strLogin, strPassword)

' strDC est le domaine interrogé
' strDomain est le domaine d'appartenance de l'utilisateur

On Error Resume Next

  Dim DSODomaine 
  Dim DSOContainer  

  'Utiliser les services d'annuaire LDAP
	    
  Set DSODomaine = GetObject("LDAP:")
  Set DSOContainer = DSODomaine.OpenDSObject("LDAP://" & strDC, strDomain & "\" & strLogin, strPassword, ADS_SECURE_AUTHENTICATION)
	
  If Err.Number <> 0 Then
    ' indebug ("Connection failed : LDAP://" & strDC & ", " &  strDomain & "\\" & strLogin & ", ********")
    LDAPIdentif = False

  Else
    LDAPIdentif = True
  End If
	
  Set DSOContainer = Nothing
  Set DSODomaine = Nothing
		
End Function

Conclusion :


Ne pas oublier d'inclure dans le projet VB la librairie 'Active DS Type Library'.
Par ailleurs, tester l'exécution directement dans l'interface de dév ne fonctionne pas en cas d'échec en authentification (ActiveX...), il faut donc compiler le projet et exécuter.

A voir également

Ajouter un commentaire Commentaires
lieutnant Messages postés 1 Date d'inscription lundi 18 février 2008 Statut Membre Dernière intervention 25 février 2008
25 févr. 2008 à 10:45
g pas bien compris la fonction
Drouzig Messages postés 3 Date d'inscription vendredi 17 décembre 2004 Statut Membre Dernière intervention 5 décembre 2005
5 déc. 2005 à 10:48
Le titre n'était pas bon, c'est vrai. Je vais donc prendre la peine de poster ma MàJ pour corriger mon premier brouillon. On parle donc bien de LDAP.
NeoBalastik, pour ton erreur -2147463168, travailles-tu sur différents domaines ou forêts? J'ai eu des soucis avec le protocole WinNT, la structure du LDAP et les "trusted domains"...
Neo.balastik Messages postés 796 Date d'inscription jeudi 17 mai 2001 Statut Membre Dernière intervention 5 mai 2009 7
5 déc. 2005 à 10:14
1 : mauvais titre : ton code n'utilise pas le provider LDAP mais WINNT
2 : mauvais code : il ne fonctionne pas. L'erreur -2147463168 remonte tout le temps.
-> tu utilises mal ADSI
3 : le paramètre strDomaine de ta fonction ne sert strictement à rien

Voici une fonction qui fonctionne :

Public Function AuthenticateUser(ByVal strDomaine As String, ByVal strUserID As String, ByVal strPassword As String) As Boolean

On Error Resume Next

Dim oDSO As IADsOpenDSObject
Dim oDomaine As IADsDomain

Set oDSO = GetObject("WinNT:")
Set oDomaine = oDSO.OpenDSObject("WinNT://" & strDomaine, strUserID, strPassword, ADS_SECURE_AUTHENTICATION)

AuthenticateUser (Err.Number 0)

' Libération des objets
Set oDSO = Nothing
Set oDomaine = Nothing

End Function
cs_hacko Messages postés 16 Date d'inscription samedi 28 décembre 2002 Statut Membre Dernière intervention 8 mai 2007
8 avril 2005 à 11:39
Sorry, mais je vois pas de ldap là dedans, tu utilise uniquement le protocole WINNT !!

Mais sinon, c'est quand même intéressant !!

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.