Sur la page
http://www.vbfrance.com/code.aspx?id=31065 se trouve un programme en vb qui vérifie l'utilisateur (nom utilisateur et mot de passe) directement à partir de l'active directory et qui indique si l'utilisateur est bon ou non. C'est un programme en vb il marche impécable mais voilà je voulais le transférer en asp. Il y a des erreurs qui apparaissent :
SetFocus n'est pas un menbre de string
IADsOpenDSObject non défini
IADsContainer non défini
Quelqu'un peut m'aider?
Voilà le code que j'ai modifier directement en vb et qui marche avec vb6.0 :
'Début du code VB
Public ms_Valid As String
Public ms_UserName As String
Private Declare Function InitCommonControls Lib "Comctl32.dll" () As Long
Protected Sub Login1_Authenticate(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.AuthenticateEventArgs)
' Utilisateur autoris
Call Ctrl_Entree()
If ms_Valid = "N" Then Exit Sub ' Si les champs ne sont pas valide le programme sort
'Unload(Me)
End
Exit
Sub
UpdateFailed:
MsgBox(
"chec
la lecture.L'application ne peut pas tre lance")
On
Error
Resume
Next
Exit
Sub
End
Sub
Protected
Sub
Page_Load(
ByVal
sender
As
Object
,
ByVal
e
As
System.EventArgs)
ms_Valid =
"N"
End
Sub
Private
Sub
Ctrl_Entree()
Dim l_Ret
As
Long
Dim s_Espace
As
String
Dim n_I
As
Integer
Dim n_NbEsp
As
Integer
s_Espace =
""
n_NbEsp = 0
ms_UserName =
""
If Loginutilisateur.UserName <>
""
And
Loginutilisateur.Password <>
""
Then
' Contrle l'utilisateur et le mot de passe
l_Ret = 0
l_Ret = Verification_Utilisateur_AD(Loginutilisateur.UserName,
"domaine", Loginutilisateur.Password)
If l_Ret = 0
Then
ms_Valid =
"O"
If InStr(1, Loginutilisateur.UserName,
"@"
, vbTextCompare) = 0
Then
ms_UserName = RTrim(UCase(Loginutilisateur.UserName))
Else
'oter tout derriere @
ms_UserName = UCase(Mid(RTrim(Loginutilisateur.UserName), 1, Len(RTrim(Loginutilisateur.UserName)) - 14))
End
If
ElseIf l_Ret = 1
Then
ms_Valid =
"N"
MsgBox(
"Mot de passe ou nom utilisateur incorrect")
ElseIf l_Ret = 2
Then
ms_Valid =
"N"
MsgBox(
"Problme de connexion")
Else
ms_Valid =
"N"
MsgBox(
"Application indisponible")
End
If
Else
If RTrim(Loginutilisateur.UserName) =
""
Or
RTrim(Loginutilisateur.Password) =
""
Then
ms_Valid =
"N"
MsgBox(
"La saisie de l'utilisateur et de son mot de passe est obligatoire")
Loginutilisateur.UserName.SetFocus()
End
If
End
If
End
Sub
Public
Function
Verification_Utilisateur_AD(
ByVal
UserName
As
String
, _
ByVal
Domain As
String
, _
ByVal Password
As
String
)
As
Long
Const ADS_SECURE_AUTHENTICATION = 1
Dim IADsOpenDSObject
As
String
Dim MyNamespace
As
IADsOpenDSObject
Dim X
As
IADsContainer
Dim oUserName
As
String
Dim oPassword
As
String
oUserName = UserName
oPassword = Password
'Conception du vrai login dans AD
On
Error
GoTo
CleanUp
If InStr(1, UserName,
"."
, vbTextCompare) <> 0
And
InStr(1, UserName,
"@"
, vbTextCompare) = 0
Then
oUserName = UserName +
"@machin.com"
End
If
MyNamespace = GetObject(
"LDAP:")
X = MyNamespace.OpenDSObject(
[ldap://secret/ LDAP://secret], oUserName, oPassword, ADS_SECURE_AUTHENTICATION)
Verification_Utilisateur_AD = 0
GoTo FinFonction
CleanUp:
Select
Case
Err.Number
Case -2147023570
' mot de passe ou utilisateur incorrect
Verification_Utilisateur_AD = 1
Case -2147016646
'connexion au domaine impossible
Verification_Utilisateur_AD = 2
Case
Else
'Erreur inconnue
Verification_Utilisateur_AD = 99
End
Select
MyNamespace =
Nothing
X =
Nothing
FinFonction:
End
Function
'Fin du code VB