Authentification Active Directory sous VB6 [Résolu]

cs_Dante27 19 Messages postés mardi 3 janvier 2006Date d'inscription 29 février 2008 Dernière intervention - 28 janv. 2008 à 16:46 - Dernière réponse : cs_ghuysmans99 3983 Messages postés jeudi 14 juillet 2005Date d'inscription 30 juin 2013 Dernière intervention
- 31 mars 2009 à 19:45
Bonjour à tous,

Je travaille actuellement sur un projet dans lequel il y aura une authentification par le biais du compte local windows; il faut donc pour ça récupérer le login et le mot de passe et les comparer par rapport à l'annuaire Active Directory.J'aurais voulu savoir si quelqu'un aurait une idée de la marche à suivre.

Merci d'avance
Afficher la suite 

Votre réponse

14 réponses

Meilleure réponse
cs_ghuysmans99 3983 Messages postés jeudi 14 juillet 2005Date d'inscription 30 juin 2013 Dernière intervention - 28 janv. 2008 à 20:55
3
Merci
Euh ... Ceci :

Option Explicit

Private Declare Function LogonUser Lib "advapi32.dll" Alias "LogonUserA" (ByVal lpszUsername As String, ByVal lpszDomain As String, ByVal lpszPassword As String, ByVal dwLogonType As E_LogonType, ByVal dwLogonProvider As E_LogonProvider, ByRef phToken As Long) As Long
Public Declare Function CloseHandle Lib "kernel32.dll" (ByVal hObject As Long) As Long
Public Declare Function ImpersonateLoggedOnUser Lib "advapi32.dll" (ByVal hToken As Long) As Long
Public Declare Function RevertToSelf Lib "advapi32.dll" () As Long

Private Enum E_LogonType
'This logon type is intended for users who will be interactively using the computer, such as a user being logged on
'by a terminal server, remote shell, or similar process.
'This logon type has the additional expense of caching logon information for disconnected operations;
'therefore, it is inappropriate for some client/server applications,
'such as a mail server.
LOGON32_LOGON_INTERACTIVE = 2

'This logon type is intended for high performance servers to authenticate plaintext passwords.
'The LogonUser function does not cache credentials for this logon type.
LOGON32_LOGON_NETWORK = 3

'This logon type is intended for batch servers, where processes may be executing on behalf of a user without
'their direct intervention. This type is also for higher performance servers that process many plaintext
'authentication attempts at a time, such as mail or Web servers.
'The LogonUser function does not cache credentials for this logon type.
LOGON32_LOGON_BATCH = 4

'Indicates a service-type logon. The account provided must have the service privilege enabled.
LOGON32_LOGON_SERVICE = 5
'This logon type is for GINA DLLs that log on users who will be interactively using the computer.
'This logon type can generate a unique audit record that shows when the workstation was unlocked.
LOGON32_LOGON_UNLOCK = 7

'#If WindowsVersionInfo.GetWindowsVersionInfo.dwPlatformId <> WinNT Then
 'This logon type preserves the name and password in the authentication package, which allows the server to make
 'connections to other network servers while impersonating the client. A server can accept plaintext credentials
 'from a client, call LogonUser, verify that the user can access the system across the network, and still
 'communicate with other servers.
 'NOTE: Windows NT:  This value is not supported.
  LOGON32_LOGON_NETWORK_CLEARTEXT = 8
 
 'This logon type allows the caller to clone its current token and specify new credentials for outbound connections.
 'The new logon session has the same local identifier but uses different credentials for other network connections.
 'NOTE: This logon type is supported only by the LOGON32_PROVIDER_WINNT50 logon provider.
 'NOTE: Windows NT:  This value is not supported.
  LOGON32_LOGON_NEW_CREDENTIALS = 9
'#End If

End Enum

Public Enum E_LogonProvider
'Use the standard logon provider for the system.
'The default security provider is negotiate, unless you pass NULL for the domain name and the user name
'is not in UPN format. In this case, the default provider is NTLM.
'NOTE: Windows 2000/NT:   The default security provider is NTLM.
LOGON32_PROVIDER_DEFAULT = 0
End Enum

Public Enum E_LogonMethod
LOGON_WITH_PROFILE = &H1
LOGON_NETCREDENTIALS_ONLY = &H2
End Enum

'###############################################################################################################

Public Function Logon(UserName As String, PassWord As String, Domain As String) As Long
Dim tok As Long, r As Boolean
r = LogonUser(UserName, Domain, PassWord, LOGON32_LOGON_NETWORK, LOGON32_PROVIDER_DEFAULT, tok)
If r Then
 Logon = tok
 Else
  Logon = False
End If
End Function<hr />, ----
[code.aspx?ID=41455 Colorisation syntaxique par Renfield]
_______________________________________________________________________
VB.NETis good ...VB6is better

Merci cs_ghuysmans99 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 68 internautes ce mois-ci

Commenter la réponse de cs_ghuysmans99
Meilleure réponse
cs_ghuysmans99 3983 Messages postés jeudi 14 juillet 2005Date d'inscription 30 juin 2013 Dernière intervention - 28 janv. 2008 à 20:56
3
Merci
Et encore une remarque sur ce code : si le résultat de la fonction est <> False, faire CloseHandle avec son résultat pour fermer le handle.
_______________________________________________________________________
VB.NETis good ...VB6is better

Merci cs_ghuysmans99 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 68 internautes ce mois-ci

Commenter la réponse de cs_ghuysmans99
Meilleure réponse
cs_Dante27 19 Messages postés mardi 3 janvier 2006Date d'inscription 29 février 2008 Dernière intervention - 29 janv. 2008 à 09:34
3
Merci
Merci beaucoup pour ce bout de code, je suis en train de bien le comprendre pour pouvoir correctement m'en servir. Par contre, j'ai une autre question. L'authentification va se faire via une form contenant 2 Labels et 2 TextBox ainsi qu'un bouton connexion; quand je cliquerais sur connexion, je passerais en paramètre à la fonction Logon le contenu des 2 TextBox?

Merci encore pour votre aide.

Merci cs_Dante27 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 68 internautes ce mois-ci

Commenter la réponse de cs_Dante27
cs_ghuysmans99 3983 Messages postés jeudi 14 juillet 2005Date d'inscription 30 juin 2013 Dernière intervention - 29 janv. 2008 à 17:32
0
Merci
Tout à fait ... un truc dans le genre :

Dim LogonResult As Long
LogonResult = Logon(Me.txt_UserName.Text, Me.txt_PassWord.Text, "tondomaine")
If LogonResult = False Then
 MsgBox "Nom d'utilisateur et/ou mot de passe incorrect(s) !", vbExclamation, "Erreur"
 Else
  MsgBox "Identification réussie ...", vbInformation, "Info"
  CloseHandle LogonResult 'ferme le handle
End If , ----
[code.aspx?ID=41455 Colorisation syntaxique par Renfield]
_______________________________________________________________________
VB.NETis good ...VB6is better
Commenter la réponse de cs_ghuysmans99
cs_Dante27 19 Messages postés mardi 3 janvier 2006Date d'inscription 29 février 2008 Dernière intervention - 30 janv. 2008 à 09:25
0
Merci
Merci beaucoup, ca fonctionne parfaitement bien!

Bonne journée
Commenter la réponse de cs_Dante27
cs_Djodu69 43 Messages postés lundi 17 décembre 2007Date d'inscription 29 avril 2010 Dernière intervention - 4 août 2008 à 08:30
0
Merci
Bonjour,

J'essaye ce code avec Access2007 mais j'ai quelque soucis au niveau des déclarations de fonctions publiques au début du code. Y-a t'il quelqu'un qui est déjà essayé ce code ?

Merci par avance
Commenter la réponse de cs_Djodu69
cs_Djodu69 43 Messages postés lundi 17 décembre 2007Date d'inscription 29 avril 2010 Dernière intervention - 4 août 2008 à 09:02
0
Merci
C'est bon j'ai trouvé :) Juste à enlever les "public" devant les déclaration.
La question que je me pose maintenant est comment récupérer des infos du genre Prénom et Nom stocker sur l'AD ?
Commenter la réponse de cs_Djodu69
cs_ghuysmans99 3983 Messages postés jeudi 14 juillet 2005Date d'inscription 30 juin 2013 Dernière intervention - 4 août 2008 à 10:09
0
Merci
http://www.freevbcode.com/ShowCode.Asp?ID=710


_________________________________________________________________________


VB.NET
is good ...
VB6
is better<
Commenter la réponse de cs_ghuysmans99
cs_philmaitre 6 Messages postés mardi 12 décembre 2000Date d'inscription 22 octobre 2008 Dernière intervention - 12 sept. 2008 à 16:31
0
Merci
Bonjour

pourriez vous me montrer coment vous avez implementer cette fonction de test de mot passe AD, je n'arrive pas à le faire fonctionner.

Merci d'avance
Philippe
Commenter la réponse de cs_philmaitre
cs_ghuysmans99 3983 Messages postés jeudi 14 juillet 2005Date d'inscription 30 juin 2013 Dernière intervention - 12 sept. 2008 à 23:28
0
Merci
Le 1er code que j'ai posté, tu le mets dans un module.
L'autre, dans l'évènement Click d'un bouton sur ton form.
Tu crées deux champs de texte : txt_UserName & txt_PassWord
_________________________________________________________________________
VB.NETis good ...VB6is better<
Commenter la réponse de cs_ghuysmans99
dvdavid2004 2 Messages postés lundi 26 mai 2003Date d'inscription 30 mars 2009 Dernière intervention - 25 mars 2009 à 09:52
0
Merci
Bonjour,
Merci pour ce script qui fonctionne parfaitement.
J'ai juste une petite question.
Comment peux-t-on éviter de vérouiller le compte Active directory au bout de x essai ?
Car j'ai implémenté cette fonction dans mon application, mais je ne veux pas que les comptes AD soient verrouillés si plusieurs saisies incorrectes.
Cela fait un moment que je cherche, mais ne trouve rien à ce sujet...
Merci d'avance pour vos réponses
David
Commenter la réponse de dvdavid2004
cs_ghuysmans99 3983 Messages postés jeudi 14 juillet 2005Date d'inscription 30 juin 2013 Dernière intervention - 25 mars 2009 à 18:43
0
Merci
Ca se trouve dans les politiques du domaine (dans Outils Administratifs / d'administration) sous ton serveur de domaine.
Commenter la réponse de cs_ghuysmans99
dvdavid2004 2 Messages postés lundi 26 mai 2003Date d'inscription 30 mars 2009 Dernière intervention - 30 mars 2009 à 13:35
0
Merci
Merci ghuysmans, mais en fait je souhaite bien conserver la stratégie de verrouillage au bout de x essais pour une connexion Windows et la désactiver pour la connexion à mon application
Commenter la réponse de dvdavid2004
cs_ghuysmans99 3983 Messages postés jeudi 14 juillet 2005Date d'inscription 30 juin 2013 Dernière intervention - 31 mars 2009 à 19:45
0
Merci
Crois pas que ce soit possible !
Commenter la réponse de cs_ghuysmans99

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.