Récupérer infos ActiveDirectory pour utilisateur courant

Onizukasan Messages postés 6 Date d'inscription mardi 24 avril 2007 Statut Membre Dernière intervention 9 juillet 2007 - 9 mai 2007 à 11:39
cs_slayvic Messages postés 1 Date d'inscription jeudi 24 juillet 2008 Statut Membre Dernière intervention 24 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.

8 réponses

zuff Messages postés 79 Date d'inscription lundi 28 octobre 2002 Statut Membre Dernière intervention 21 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)   

      Try
         NomRecherche = Trim(
CStr(result.Properties(
"sn")(0))).ToUpper
      
Catch ex
As Exception
         NomRecherche =
""
      End
Try

      Try
         PrenomRecherche = Trim(
CStr(result.Properties(
"givenname")(0)))
      
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)

   searcher.PropertiesToLoad.Add(
"memberOf")
   searcher.Filter =
"(&(anr=" & LeLogin &
")(objectCategory=person))"

   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

   End
Try

   Return
False
End
Function

 
0
cs_Djodu69 Messages postés 43 Date d'inscription lundi 17 décembre 2007 Statut Membre Dernière intervention 29 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" ?

Merci par avance
0
cs_Djodu69 Messages postés 43 Date d'inscription lundi 17 décembre 2007 Statut Membre Dernière intervention 29 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 ?
0
zuff Messages postés 79 Date d'inscription lundi 28 octobre 2002 Statut Membre Dernière intervention 21 octobre 2008
28 juil. 2008 à 10:30
Excuse, clsActiveDirectory est une classe que j'ai créé dans App_Code car je fais beaucoup de chose avec l'Active Directory.

Pour ta classe, il faut :
Imports

System.Web.Configuration

Imports System.DirectoryServices

et le DirectoryServices doit être monté dans ton web.config en rajoutant la référence .Net.

Pour les droits pas de problème avec les groupes, personnellement c'est ce que je fais avec mes applicatifs Intranet.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Djodu69 Messages postés 43 Date d'inscription lundi 17 décembre 2007 Statut Membre Dernière intervention 29 avril 2010
28 juil. 2008 à 13:56
Finalement je suis passé parle code de Microsoft.
Merci de ton aide quand même
0
cs_Djodu69 Messages postés 43 Date d'inscription lundi 17 décembre 2007 Statut Membre Dernière intervention 29 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 ?

merci par avance
0
cs_Djodu69 Messages postés 43 Date d'inscription lundi 17 décembre 2007 Statut Membre Dernière intervention 29 avril 2010
31 juil. 2008 à 08:10
up !
0
cs_slayvic Messages postés 1 Date d'inscription jeudi 24 juillet 2008 Statut Membre Dernière intervention 24 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
0
Rejoignez-nous