Voir si l'utilisateur fait partie du groupe Active Directory en C# + Asp.net
J'ai besoin d'un moyen de voir si un utilisateur fait partie d'un groupe active directory à partir de mon .Net 3.5 asp.net application en c#.
Je suis en utilisant le standard de l'authentification ldap exemple de msdn mais je ne vois pas vraiment comment vérifier l'encontre d'un groupe.
Vous devez vous connecter pour publier un commentaire.
Avec 3,5 et Système.DirectoryServices.AccountManagement c'est un peu plus propre:
var pc = new PrincipalContext(ContextType.Domain);
àvar pc = new PrincipalContext(ContextType.Domain, "MyDomainHere");
Pour se débarrasser de l'exception. Après qui fonctionne parfaitement.Nick Craver la solution ne fonctionne pas pour moi .NET 4.0. J'obtiens une erreur à propos d'un déchargé domaine d'application. Au lieu de l'utiliser, j'ai utilisé cette (nous n'avons qu'un seul domaine). Il s'agira de vérifier des groupes de groupes, ainsi que l'appartenance à un groupe.
Le code ci-dessous dans .net 4.0
Solution La Plus Simple
Cette méthode peut être utile si vous essayez de déterminer si le Windows authentifié l'utilisateur actuel est dans un rôle particulier.
Cela dépend de ce que tu veux dire par la que si un utilisateur est dans un groupe d'ANNONCES. Dans la ma, les groupes peuvent être un groupe de Sécurité ou d'un groupe de Distribution. Même pour des groupes de sécurité, cela dépend si des groupes comme "Utilisateurs du Domaine" ou "Utilisateurs" ont besoin d'être inclus dans l'adhésion à vérifier.
IsUserInSecurityGroup seulement pour les groupes de sécurité et de travail pour le Groupe Principal genre de groupes comme "Utilisateurs du Domaine" et "Utilisateurs", et non pas des groupes de distribution. Il permettra également de résoudre le problème avec les groupes imbriqués.
IsUserInAllGroup vérifiera également pour les groupes de Distribution, mais je ne suis pas sûr que si vous exécutez dans les problèmes d'autorisation. Si vous le faites, l'utilisation d'un compte de service qui est en WAAG (Voir MSDN)
La raison pour laquelle je ne suis pas à l'aide de UserPrincipal.GetAuthorizedGroups (), c'est parce qu'il a beaucoup de questions, telles que l'obligation de l'appelant en compte dans la WAAG et nécessitant il n'y a pas une entrée dans SidHistory (Voir David Thomas commentaire)
Ici est mes 2 cents.
Cela semble beaucoup plus simple:
Comment à ce sujet
Comment écrire la requête LDAP pour tester si l'utilisateur est membre d'un groupe?
Brandon Johnson, adoré, j'ai utilisé ce que vous avez eu, mais apporté la modification suivante:
Vous pouvez essayer le code suivant:
Si vous voulez vérifier si l'utilisateur à des groupes d'appartenance, y compris les groupes imbriqués qui est indirectement lié à l'utilisateur groupe parent, vous pouvez essayer d'utiliser le "tokenGroups" propriétés comme ci-dessous: