Récupérer infos ActiveDirectory pour utilisateur courant
Onizukasan
Messages postés6Date d'inscriptionmardi 24 avril 2007StatutMembreDernière intervention 9 juillet 2007
-
9 mai 2007 à 11:39
cs_slayvic
Messages postés1Date d'inscriptionjeudi 24 juillet 2008StatutMembreDernière intervention24 avril 2010
-
24 avril 2010 à 12:22
Bonjour à tous,
tout d'abord j'utilise Visual Studio .NET 2003 et framework 1.1
je souhaite mettre en place une gestion des droits d'accès sur une application web.
les utilisateurs étant déjà identifiés (ils ont déjà entrés leurs identifiants sur windows
et sont référencés sous Active Directory implanté sur le réseau Intranet),
il n'est donc pas nécessaire de les faire retaper des mots de passe à l'arrivée sur le site.
Ainsi je souhaite pour établir un controle transparent pour l'utilisateur. Je souhaite récupérer les données de l'utilisateur qui se connecte, notamment son login Active Directory (le SAMAccountName si je ne me trompe pas).
Or tout ce que j'ai trouvé au sujet d'active directory et de diverses méthodes d'accès
à celui-ci permet de manipuler les entrées active directory mais pas d'obtenir les
informations que je souhaite pour l'utilisateur courant.
Existe il des méthodes ou des propriétés issues du framework ou du server IIS pour obtenir le login Active Directory de l'utilisateur connecté ? ( genre System.Environment.UserName )
L'espace de noms System.DirectoryServices me permettrait-il de résoudre mon problème ou
ne sert-il qu'à effectuer des recherches et à manipuler les entrées AD ?
En esperant que tout cela vous inspire et merci de m'avoir lu en tout cas.
zuff
Messages postés79Date d'inscriptionlundi 28 octobre 2002StatutMembreDernière intervention21 octobre 2008 9 mai 2007 à 13:29
Je travail pas mal avec Active directory pour les applis Intranet donc voici une premier code pour récuperer l'indentifiant window (attention il y a une case à cocher sur IIS pour pouvoir récupere les ServerVariables):
Dim
user
As
String
' Authentification Digest sur iis
user = Request.ServerVariables(
"REMOTE_USER"
)
Dim
RecupUser()
As
String
RecupUser = user.Split(
""
)
user = RecupUser(RecupUser.Length - 1)
Ensuite j'ai une classe ActiveDirectory que je déclare ensuite
Dim objPersonne
As
New clsActiveDirectory (user)
' verif les autorisations
If objPersonne.AppartientA(user, WebConfigurationManager.AppSettings(
"Applicatif").ToString) =
False
Then
Response.Redirect(
"Refus.aspx")
End
If
cette vérif permet de savoir si la personne appartient au groupe d'utilisateurs qui ont droit d'utiliser l'appli Intranet.
voici pour info mes 2 méthodes utilisées de ma classe :
Public
Sub New(
ByVal LeLogin
As
String)
' Cherche les Informations Sur le Compte suivant le Login Transmis
Dim searcher
As
New DirectorySearcher(rootEntry)
' Mettre ici les valeurs des différents attributs
searcher.PropertiesToLoad.Add(
"cn")
searcher.PropertiesToLoad.Add(
"givenname")
searcher.PropertiesToLoad.Add(
"sn")
searcher.Filter =
"(&(anr=" & LeLogin &
")(objectCategory=person))"
Dim results
As SearchResultCollection
results = searcher.FindAll()
If results.Count > 0
Then
Dim result
As SearchResult
For
Each result
In results
LoginRecherche =
CStr(result.Properties(
"cn")(0)).ToUpper
CheminPersonneRecherche =
CStr(result.Path)
Catch ex
As Exception
PrenomRecherche =
""
End
Try
Next
End
If
End
Sub
Public
Function AppartientA(
ByVal LeLogin
As
String,
ByVal NomGroupe
As
String)
As
Boolean
' recherche les groupes de la personne
Dim searcher
As
New DirectorySearcher(rootEntry)
Dim results
As SearchResultCollection
results = searcher.FindAll()
Try
If results.Count > 0
Then
Dim result
As SearchResult
For
Each result
In results
Dim NbCollection
As
Integer
NbCollection = result.Properties(
"memberOf").Count
For i
As
Integer = 0
To NbCollection - 1
Dim CheminGroupe
As
String = Trim(
CStr(result.Properties(
"memberOf")(i)))
If CheminGroupe.IndexOf(WebConfigurationManager.AppSettings(
"LDAPGroupes").ToString) >= 0
Then
CheminGroupe =
"LDAP://" & CheminGroupe
Dim groupEntry
As DirectoryEntry =
New DirectoryEntry(CheminGroupe)
' renvoi oui s'il appartient au groupe
If groupEntry.Name.IndexOf(NomGroupe) >= 0
Then
Return
True
End
If
End
If
Next
Next
End
If
Catch ex
As Exception
cs_Djodu69
Messages postés43Date d'inscriptionlundi 17 décembre 2007StatutMembreDernière intervention29 avril 2010 28 juil. 2008 à 08:19
Bonjour,
Ton code est fort intéressant et va dans le sens de ma recherche.
As ton avis est il aussi possible de gérer des droits avec les groupes d'AD, notamment sur des objets "menu" ?
cs_Djodu69
Messages postés43Date d'inscriptionlundi 17 décembre 2007StatutMembreDernière intervention29 avril 2010 28 juil. 2008 à 09:07
Autre souci. VS2008 ne reconnais pas le clsActiveDirectory de "Dim objPersonne As New clsActiveDirectory(utilisateur)" Y-a t'il un namespace spécifique a importer ?
cs_Djodu69
Messages postés43Date d'inscriptionlundi 17 décembre 2007StatutMembreDernière intervention29 avril 2010 28 juil. 2008 à 14:26
Mon problème maintenant est comment gérer les rôles et les droits pour les utilisateurs ?
Sachant que j'ai un menu créé sur une base xml (sitemap) et que donc mes utilisateurs sont stockés sur l'AD ?
cs_slayvic
Messages postés1Date d'inscriptionjeudi 24 juillet 2008StatutMembreDernière intervention24 avril 2010 24 avril 2010 à 12:22
salut tout le monde,
stp je veux recupere juste les information de user conecté sur une page asp.net!mais j'arrive pas!
merci
nb:comment activer Servervariable dans mon iis