Probleme active directory asp.net

Signaler
Messages postés
70
Date d'inscription
mercredi 7 décembre 2005
Statut
Membre
Dernière intervention
9 juillet 2010
-
Messages postés
425
Date d'inscription
mercredi 22 janvier 2003
Statut
Modérateur
Dernière intervention
13 juillet 2007
-
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 lanc‚e")



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



' Contr“le 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(
"ProblŠme 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

6 réponses

Messages postés
425
Date d'inscription
mercredi 22 janvier 2003
Statut
Modérateur
Dernière intervention
13 juillet 2007

Bonjour,

Je vais répondre un peu a coté, mais si tu es en ASP.NET 2.0, tu as le membership provider (avec une méthode static membership.validateuser() de mémoire) qui te permet de faire ce genre d'actions.
Plus précisement, il te faut utiliser: "activedirectorymembershipprovider".


<HR>
Azra (Florent) - MVS - MCAD.NET
Messages postés
70
Date d'inscription
mercredi 7 décembre 2005
Statut
Membre
Dernière intervention
9 juillet 2010

tu peux expliquer ta méthode car je suis qu'un débutant en asp.net il faut remplacet SetFocus par activedirectorymembershipprovider?
Messages postés
70
Date d'inscription
mercredi 7 décembre 2005
Statut
Membre
Dernière intervention
9 juillet 2010

Oui j'utilise l'asp.net 2.0 avec Visual Web Déveloper 2005
Messages postés
425
Date d'inscription
mercredi 22 janvier 2003
Statut
Modérateur
Dernière intervention
13 juillet 2007

Bonjour,

Non c'est un peu plus compliqué que ça, c'est toute une logique de développement.

Pour le fonctionnement des membership provider en général, voici une webcast: http://www.microsoft.com/france/events/event.aspx?EventID=118766646

Pour le ADMemberShipProbiver, toute la documentation: http://msdn2.microsoft.com/en-us/library/system.web.security.activedirectorymembershipprovider.aspx

Bon courage!


<HR>
Azra (Florent) - MVS - MCAD.NET
Messages postés
70
Date d'inscription
mercredi 7 décembre 2005
Statut
Membre
Dernière intervention
9 juillet 2010

merci pour la doc
Je vais la lire
Messages postés
425
Date d'inscription
mercredi 22 janvier 2003
Statut
Modérateur
Dernière intervention
13 juillet 2007

Penses a click sur "Réponse acceptée" si ton problème est résolut :)


<HR>
Azra (Florent) - MVS - MCAD.NET