2014-07-07 1 views
1

J'ai suivi cet article pour créer une application de démonstration avec une fédération ADFS sur site.Comment obtenir des groupes d'utilisateurs à partir de revendications ADFS sur site

http://www.cloudidentity.com/blog/2014/02/12/use-the-on-premises-organizational-authentication-option-adfs-with-asp-net-in-visual-studio-2013/

Je suis en mesure d'obtenir les informations nécessaires à l'utilisateur en utilisant un code simple

Dim UserEmail = System.Security.Claims.ClaimsPrincipal.Current.FindFirst(System.IdentityModel.Claims.ClaimTypes.Email).Value 

Mais comment je peux obtenir des groupes d'utilisateurs où le nom d'utilisateur appartient et vérifier si le compte utilisateur est membre du groupe Windows en Active Directory?

J'ai essayé d'utiliser System.Security.Claims.ClaimsPrincipal.Current.IsInRole pour vérifier si l'utilisateur est dans le groupe, mais il ne fonctionnera pas

Répondre

6

Dans ADFS règles concernant les réclamations, vous devez configurer une règle « Envoyer des attributs LDAP comme Claims »/« Groupes Jeton - Noms non qualifiés "et mappage vers" Rôle "en tant que" Type de revendication sortante ". ADFS fournit ensuite tous les groupes de sécurité dont l'utilisateur est memberOf au format Role et WIF les mappe à la construction IsInRole.

+0

ne peuvent toujours pas obtenir un rôle pour l'utilisateur. Ai-je besoin d'ajouter rolemanager à web.config – CodAri

+0

Si vous énumérez toutes les revendications que vous recevez, y a-t-il des rôles dans la liste? – nzpcmad

+0

Merci. Cela fonctionne très bien pour moi, y compris en utilisant 'System.Security.Claims.ClaimsPrincipal.Current.IsInRole (" MyGroupName ")'. OP: Assurez-vous de supprimer tous les cookies du domaine de votre application (pour forcer l'actualisation de l'identité à partir d'ADFS). Je peux voir tous les groupes dans la propriété '((System.Security.Claims.ClaimsIdentity) System.Security.Claims.ClaimsPrincipal.Current.Identity) .Claims', exemple: http://i.imgur.com/jRoc1gA. png – gregmac

-1

Cela suffit.

ClaimsPrincipal.Current.AddIdentity(new ClaimsIdentity()); 
ViewBag.Name = ClaimsPrincipal.Current.FindFirst(ClaimTypes.Email).Value; 

:)

Questions connexes