begin process at 2010 02 10 07:08:35
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Système

 > [ACTIVEDIRECTORY] DÉTERMINE SI L'UTILISATEUR USERNAME EST MEMBRE DU GROUPE GROUPNAME (SOIT DIRECTEMENT, SOIT PAR HÉRITAGE)

[ACTIVEDIRECTORY] DÉTERMINE SI L'UTILISATEUR USERNAME EST MEMBRE DU GROUPE GROUPNAME (SOIT DIRECTEMENT, SOIT PAR HÉRITAGE)


 Information sur la source

Note :
Aucune note
Catégorie :Système Source .NET ( DotNet ) Classé sous :Active Directory, ldap, isMember, héritage, distinguishedName Niveau :Initié Date de création :06/11/2007 Date de mise à jour :13/11/2007 11:19:03 Vu :7 401

Auteur : Francks11

Ecrire un message privé
Commentaire sur cette source (1)
Ajouter un commentaire et/ou une note

 Description

Voici une fonction qui permet de savoir si un utilisateur fait partie d'un groupe AD (directement ou par héritage)

Exemple :
toto fait partie du groupe A qui fait partie du groupe B

Si je teste si l'utilisateur fait partie du groupe B -> réponse vrai (par héritage)
Si je teste si l'utilisateur fait partie du groupe A -> réponse vrai (directement)

L'utilisation est très simple :

Il suffit d'appeler la fonction isMemberOf avec comme paramètres
distinguishedGroupName - correspond au distinguishedName du groupe
distinguishedUserName - correspond au distinguishedName de l'utilisateur

Remarque :
Cette fonction a été utilisée dans une classe. Comme vous pouvez le voir, l'instance DirectoryEntry n'apparait pas. Il faudra instancier un DirectoryEntry avant d'utiliser la fonction.

Source

  • /// <summary>
  • /// Détermine si l'utilisateur est membre du groupe distinguishedGroupName (soit directement, soit par héritage).
  • /// </summary>
  • /// <param name="distinguishedGroupName">Propriété distinguishedName du groupe (ex : CN=....,OU=Groupes Hierarchiques,OU=Groupes,DC=...,DC=fr)</param>
  • /// <param name="distinguishedUserName">Propriété distinguishedName de l'utilisateur (ex : CN=NOM Prenom,OU=....,OU=.....,OU=Poles,DC=....,DC=fr)</param>
  • /// <returns>
  • /// <c>vrai</c> si l'utilisateur est membre du groupe distinguishedGroupName; sinon, <c>faux</c>.
  • /// </returns>
  • public bool IsMemberOf(string distinguishedGroupName,string distinguishedUserName)
  • {
  • DirectorySearcher myDirectorySearcher;
  • DirectoryEntry myDirEntry = null;
  • bool isMember = false;
  • SearchResultCollection myResults;
  • try
  • {
  • //On crée un nouvel objet DirectorySearcher.
  • myDirectorySearcher = new DirectorySearcher();
  • //On applique les paramètres de recherche.
  • myDirectorySearcher.SearchRoot = this.myDirectoryEntry;
  • myDirectorySearcher.Filter = "(&(objectClass=group)(distinguishedName="+distinguishedGroupName+"))";
  • myDirectorySearcher.SearchScope = SearchScope.Subtree;
  • myDirectorySearcher.SizeLimit = 1;
  • myDirectorySearcher.PropertiesToLoad.AddRange(new string[]{"cn"});
  • //On récupère le résultat
  • SearchResult myResult = myDirectorySearcher.FindOne();
  • if(myResult!=null)
  • {
  • myDirEntry = myResult.GetDirectoryEntry();
  • //Vérification si l'utilisateur userName est directement membre du groupe distinguishedGroupName
  • if((bool)myDirEntry.Invoke("IsMember",new Object[]{"chemin racine AD"+distinguishedUserName}))
  • {
  • isMember=true;
  • }
  • else
  • {
  • //On crée un nouvel objet DirectorySearcher.
  • myDirectorySearcher = new DirectorySearcher();
  • //On applique les paramètres de recherche.
  • myDirectorySearcher.SearchRoot = this.myDirectoryEntry;
  • myDirectorySearcher.Filter = "(&(objectClass=group)(memberOf="+distinguishedGroupName+"))";
  • myDirectorySearcher.SearchScope = SearchScope.Subtree;
  • //on indique les propriétés à charger
  • myDirectorySearcher.PropertiesToLoad.AddRange(new string[]{"distinguishedName"});
  • //On récupère les résultats.
  • myResults = myDirectorySearcher.FindAll();
  • foreach(SearchResult result in myResults)
  • {
  • isMember=isMember || IsMemberOf(result.Properties["distinguishedName"][0].ToString(),distinguishedUserName);
  • }
  • }
  • }
  • else
  • {
  • throw(new Exception("Le groupe " + distinguishedGroupName + " est introuvable."));
  • }
  • }
  • catch(Exception ex)
  • {
  • throw(new Exception("Echec de vérification de l'appartenance à un groupe",ex));
  • }
  • return isMember;
  • }
			/// <summary>
			/// Détermine si l'utilisateur est membre du groupe distinguishedGroupName (soit directement, soit par héritage).
			/// </summary>
			/// <param name="distinguishedGroupName">Propriété distinguishedName du groupe (ex : CN=....,OU=Groupes Hierarchiques,OU=Groupes,DC=...,DC=fr)</param>
			/// <param name="distinguishedUserName">Propriété distinguishedName de l'utilisateur (ex : CN=NOM Prenom,OU=....,OU=.....,OU=Poles,DC=....,DC=fr)</param>
			/// <returns>
			/// 	<c>vrai</c> si l'utilisateur est membre du groupe distinguishedGroupName; sinon, <c>faux</c>.
			/// </returns>
			public bool IsMemberOf(string distinguishedGroupName,string distinguishedUserName)
			{ 
				DirectorySearcher myDirectorySearcher;
				DirectoryEntry myDirEntry = null;
				bool isMember = false;
				SearchResultCollection myResults;

				try
				{
					//On crée un nouvel objet DirectorySearcher.
					myDirectorySearcher = new DirectorySearcher();

					//On applique les paramètres de recherche. 
					myDirectorySearcher.SearchRoot = this.myDirectoryEntry;
					myDirectorySearcher.Filter = "(&(objectClass=group)(distinguishedName="+distinguishedGroupName+"))";
					myDirectorySearcher.SearchScope = SearchScope.Subtree;
					myDirectorySearcher.SizeLimit = 1;
					myDirectorySearcher.PropertiesToLoad.AddRange(new string[]{"cn"});

					//On récupère le résultat
					SearchResult myResult = myDirectorySearcher.FindOne();

					if(myResult!=null)
					{
						myDirEntry = myResult.GetDirectoryEntry();

						//Vérification si l'utilisateur userName est directement membre du groupe distinguishedGroupName
						if((bool)myDirEntry.Invoke("IsMember",new Object[]{"chemin racine AD"+distinguishedUserName}))
						{
							isMember=true;
						}
						else
						{
							//On crée un nouvel objet DirectorySearcher.
							myDirectorySearcher = new DirectorySearcher();

							//On applique les paramètres de recherche. 
							myDirectorySearcher.SearchRoot = this.myDirectoryEntry;
							myDirectorySearcher.Filter = "(&(objectClass=group)(memberOf="+distinguishedGroupName+"))";
							myDirectorySearcher.SearchScope = SearchScope.Subtree;

							//on indique les propriétés à charger
							myDirectorySearcher.PropertiesToLoad.AddRange(new string[]{"distinguishedName"});

							//On récupère les résultats.
							myResults = myDirectorySearcher.FindAll();
						
							foreach(SearchResult result in myResults)
							{
								isMember=isMember || IsMemberOf(result.Properties["distinguishedName"][0].ToString(),distinguishedUserName);
							}
						}
					}
					else
					{
						throw(new Exception("Le groupe " + distinguishedGroupName + " est introuvable."));
					}

				}

				catch(Exception ex)
				{
					throw(new Exception("Echec de vérification de l'appartenance à un groupe",ex));
				}

				return isMember;
			}

 Conclusion

Je suis à l'écoute des quelconques remarques.


 Historique

06 novembre 2007 11:02:46 :
Modification description
06 novembre 2007 20:21:20 :
Modification du code source!
06 novembre 2007 20:25:24 :
Modification de la description
13 novembre 2007 11:19:03 :
Il faut penser à rajouter l'adresse racine de l'active directory. if((bool)myDirEntry.Invoke("IsMember",new Object[]{"chemin racine AD"+distinguishedUserName}))

 Sources de la même categorie

Source avec Zip Source avec une capture Source .NET (Dotnet) GESTION DES LANGUES, COUNTRIES, CHAÎNES DE CARACTÈRE SIMPLE par gourky
Source avec Zip Source avec une capture Source .NET (Dotnet) EXPLORER LA MFT D'UNE PARTITION NTFS par Willi
Source avec Zip Source avec une capture Source .NET (Dotnet) WRAPPER COMPLET SUR L'API DE BIOMÉTRIE DE WINDOWS 7 par Willi
Source avec Zip Source .NET (Dotnet) UTILISER L'ASSISTANT DE GRAVURE DE WINDOWS par Willi
Source avec Zip Source avec une capture Source .NET (Dotnet) EASYDESKXP par neo2k2

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture Source .NET (Dotnet) PROTEGER SON APPLICATION, AUTHENTIFICATION PAR COMPTES SYSTÈ... par boutemine
Source avec Zip Source .NET (Dotnet) PROPRIÉTÉS D'EXTENSION AVEC C# 3.0 par mathmax
Source avec Zip Source .NET (Dotnet) TEXTBOX MONÉTAIRE par GG29
Source avec Zip Source avec une capture Source .NET (Dotnet) EXTENDPANEL : UN PANEL ORIGINAL ET STYLISÉ par wizad
Source avec Zip Source avec une capture Source .NET (Dotnet) GESTION DE COMMANDE AVEC SERIALISATION HERITAGE CLASSE STATI... par DavGeneration

Commentaires et avis

Commentaire de Bloodymary le 22/05/2008 15:32:01

Dim estDejaMembre As Boolean = Convert.ToBoolean(monGroupe.Invoke("IsMember", New Object() {monUtilisateur.Path}))

;)

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

ASP.NET + héritage de classe [ par Volfield ] Bonjour, J'ai fait une classe Conf qui hérite de la classe Page.Le problème c'est que quand je fais mes autres pages qui hérite de Conf, il ne connais Héritage visuel [ par Viracoccha ] Quand je veux hériter d'un de mes "windows form" le concepteur de vue m'affiche cette erreur: "La classe de base n' a pas pu être chargée. Vérifiez qu authentification LDAP en c# et ASP.NET [ par crapulas ] Bonjour, j'ai créé une page de connexion pour un site web evec des textbox, label etc... en ASP.NET et avec du c#Il est demandé à la personne de rentr [C#]Comment faire de l'héritage multiple ? [ par oberown ] Comment faire pour qu'une classe A hérite de la classe B et C ? Enlever l'héritage d'une classe [ par JuS ] Je m'explique ...Existe-t-il une méthode permettant de ne pas avoir accès aux méthodes héritées d'une classe ? (à part la méthode de créer les mêmes m Héritage [ par fdouieb ] Bonjour,Je souhaite savoir comment dans un héritage je peux bloquer le script en amont. bordel d'héritage [ par reyman ] Rien de mieux qu'un exemple pour se faire comprendre :namespace A{ public class a1 { a2 objet; // ma propriété a1() Héritage multiple [ par ricklekebekoi ] prenons trois classesBaseMorpionGame;BaseTwoPlayerGame;BaseIAGame;Ensuite, deux autres classes:SingleMorpionGame;TwoPJMorpionGame;Je souhaiterais que Protected ou private ? [ par thiosyiasar ] Protected ou Private ? Salut &#224; tous. En fait j'ai une petite question qui me turlupine un peu depuis quelques temps. J'ai d&#233;but&#233; la pro [.NET] [C#] LDAP SunOne error [ par Meuledor ] Bonjour. J'ai une erreur qui me bloque alors que j'essais d'authentifier des users via ldap sur un serveur Directory SunOne (version inconnue) : <sp


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), 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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,827 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales