Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : récupérer infos ActiveDirectory pour utilisateur courant [ Divers / Autre ] (Onizukasan)

mercredi 9 mai 2007 à 11:39:05 | récupérer infos ActiveDirectory pour utilisateur courant

Onizukasan

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.


mercredi 9 mai 2007 à 13:29:34 | Re : récupérer infos ActiveDirectory pour utilisateur courant

zuff

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 AsNew clsActiveDirectory (user)

' verif les autorisations
If objPersonne.AppartientA(user, WebConfigurationManager.AppSettings("Applicatif").ToString) = FalseThen
   
Response.Redirect("Refus.aspx")
EndIf

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 :

PublicSub New(ByVal LeLogin AsString)

' Cherche les Informations Sur le Compte suivant le Login Transmis
Dim searcher AsNew 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
   
ForEach 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 =
""
      
EndTry

      
Try
         
PrenomRecherche = Trim(CStr(result.Properties("givenname")(0)))
      
Catch ex As Exception
         PrenomRecherche =
""
      
EndTry

   Next
EndIf

EndSub



PublicFunction AppartientA(ByVal LeLogin AsString, ByVal NomGroupe AsString) AsBoolean
   
' recherche les groupes de la personne
   
Dim searcher AsNew 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
         
ForEach result In results
            
Dim NbCollection AsInteger
            
NbCollection = result.Properties("memberOf").Count
            
For i AsInteger = 0 To NbCollection - 1
               
Dim CheminGroupe AsString = 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
                     
ReturnTrue
                  
EndIf
               
EndIf
            
Next
         
Next
      
EndIf
   Catch ex As Exception
   EndTry

   
ReturnFalse
EndFunction





 

lundi 28 juillet 2008 à 08:19:29 | Re : récupérer infos ActiveDirectory pour utilisateur courant

Djodu69

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

lundi 28 juillet 2008 à 09:07:26 | Re : récupérer infos ActiveDirectory pour utilisateur courant

Djodu69

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 ?

lundi 28 juillet 2008 à 10:30:16 | Re : récupérer infos ActiveDirectory pour utilisateur courant

zuff

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.

lundi 28 juillet 2008 à 13:56:28 | Re : récupérer infos ActiveDirectory pour utilisateur courant

Djodu69

Finalement je suis passé par le code de Microsoft.
Merci de ton aide quand même

lundi 28 juillet 2008 à 14:26:25 | Re : récupérer infos ActiveDirectory pour utilisateur courant

Djodu69

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

jeudi 31 juillet 2008 à 08:10:55 | Re : récupérer infos ActiveDirectory pour utilisateur courant


Cette discussion est classé dans : récupérer, utilisateur, souhaite, active, directory


Répondre à ce message

Sujets en rapport avec ce message

Groupes Active Directory [ par arkel ] Salut,J'essaie de récupérer la liste des membres qui composent un groupe de l'Active Directory Windows 2000.... mais j'ai quelques petits problèmes.Po informations sur un utilisateur dans l'active directory de Win2000 [ par stefdef ] Comment fait-on pour récupérer par exemple l'email d'un utilisateur précis dans l'active directory???(je suis débutant en asp, alors merci d'etre clai Utilisateur "Inactif" sur Active directory [ par neferti ] Bonjour,Je suis actuellement en stage et je souhaiterais savoir s'il est possible de mettre un objet de la classe User en statut inactif et de l'activ Récupérer les groupes d'Active Directory avec ASP.Net [ par komisarek ] BonjourJ'aimerais savoir comment récupérer les groupes d'Active Directory avec ASP.NET.Je trouve beaucoup d'infos sur le sujet en ce qui concerne les ADSI (Active Directory) : Récupérer Nom du "Manager" d'un groupe [ par Boreux ] ASP et Active Directory [ par Bal1n ] Coucou :) Alors voilà j'ai un code qui fonctionne a peu près bien mais j'ai toutefois un problème qui me casse les bonbons. Voici le code : < Modification d'un user dans l'active directory [ par ologiu ] Bonjour a tous,je developpe un site intranet en asp et je dois effectuer diff actions sur l'active directory. J'ai trouver comment effectuer l'ajout d modification dans active directory [ par ologiu ] Bonjour a tous,je developpe un site intranet en asp et je dois effectuer diff actions sur l'active directory. J'ai trouver comment effectuer l'ajout d Réinitialisation des mots de passe d'un active directory LDAP par ASP [ par 250386 ] Bonjour,mon bahu m'a donner un projet et j'ai un petit problème.On m'a demander de faire un petit programme (asp, php, html,...) pour permettre à l'ad besoin de quelques definitions svp. [ par titebouille ] Bonjour tout le monde.Bon n'ayant pas le droit à un prof d'info dans mon bts IG option administrateur,j'aurai besoin de l'aide si vous le pouvez.En fa


Nos sponsors

Sondage...

CalendriCode

Janvier 2009
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

Consulter la suite du CalendriCode

Téléchargements



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 1,108 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.