Obtenir les membres d'un domaine AD groupe à l'aide d'API Sharepoint
Dans mon code Sharepoint-je afficher une liste de tous les utilisateurs définis par:
foreach (SPUser user in SPContext.Current.Web.AllUsers)
{
...
}
La grande partie est, je peux ajouter un groupe de sécurité de domaine à un groupe Sharepoint (comme Visiteurs) ainsi ajouter plusieurs utilisateurs à la fois (plus simple pour l'administration). Mais mon code ne voit pas les utilisateurs du moins pas jusqu'à ce qu'ils se connectent pour la première fois (si elles ont suffisamment de droits). Dans ce cas, je ne peux voir que le groupe de sécurité de domaine SPUser
instance de l'objet avec son IsDomainGroup
ensemble de true
.
Est-il possible d'obtenir des membres du groupe de domaine par le biais de Sharepoint sans avoir recours à l'Active Directory de l'interrogation (qui est quelque chose que je préfère éviter, car vous avez probablement besoin des droits suffisants de faire de telles opérations = plus d'administration: Sharepoint droits de l' + AD droits).
OriginalL'auteur Robert Koritnik | 2010-11-30
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser la méthode
SPUtility.GetPrincipalsInGroup
(MSDN).Tous les paramètres sont auto-expliquer à l'exception
string input
, qui est le compte NT nom du groupe de sécurité:Veuillez noter que cette méthode ne permet pas de résoudre des groupes de sécurité imbriqués. En outre l'utilisateur en cours d'exécution est tenu d'avoir à parcourir les infos de l'utilisateur de l'autorisation (
SPBasePermissions.BrowseUserInfo
) sur le site web en cours.Mise à jour:
Edit:
C'est vrai, bien sûr, mais SharePoint est à la recherche de l'AD. C'est pourquoi un service de pool d'applications compte est nécessaire pour avoir un accès en lecture à l'ANNONCE.
En d'autres termes, vous devriez être sûr de l'exécution de requêtes à l'encontre de l'ANNONCE si vous exécutez votre code est revenue pour le compte de processus.
Non, les groupes imbriqués ne sera pas résolu. Si la performance n'est pas pertinente, les appels récursifs à cette méthode ne devrait pas être une grosse affaire. Les groupes imbriqués sera retourné comme principales infos.
Ok, donc si j'énumère
SPContext.Current.Web.AllUsers
et se rendre à groupes de domaine je peux utiliser ce nom pour une utilisation avecGetPrincipalsInGroup
? Je n'ai pas testé, donc je suis juste de demander un supplément de Q.Oui, l'utilisation
SPUser.LoginName
pour lainput
paramètre.Si pense qu'il y a une erreur dans votre code exemple. La ligne "if (j'.Type == SPPrincipalType.SecurityGroup)". Il devrait être "je.PrincipalType" et non pas "je.Type" (au moins dans SharePoint 2010).
OriginalL'auteur Stefan
Je vous suggère de simplement des requêtes directement à Active Directory. Vous dépensez beaucoup d'efforts pour essayer d'obtenir SharePoint à faire appel à de la publicité pour vous. Chaque compte qui possède le Domaine de l'Utilisateur, l'accès devrait être en mesure d'interroger les groupes d'ANNONCES que vous avez imbriqué dans SharePoint. Je voudrais juste aller à la source.
De cette façon, vous n'avez pas à vous soucier de Parcourir les Autorisations de l'Utilisateur ou de toute autre chose. À mon avis, essayer de proxy ce par le biais de SharePoint est tout simplement faire de votre vie plus difficile.
Désolé, je suis encore nouveau ici. Regarde comme on pourrait facilement le modifier pour mettre en œuvre une robuste solution à votre problème. lien
Linq to AD linqtoad.codeplex.com
OriginalL'auteur Mizzle-Mo