2010-12-02 22 views
2

J'utilise une application Web d'activation des revendications. Je veux verrouiller une page Web avec un attribut personnalisé pour permettre l'accès à la page si une réclamation (s) est présent ..Annotation d'une classe à l'aide de ClaimsPrincipalPermission avec une réclamation renvoyée par ADFS 2.0

je pouvais faire ce qui suit

Claim claim = claimsIdentity.Claims.FirstOrDefault(c => c.ClaimType 
== "http://somedomain.com/claims/MemberOfGroup" && c.Value == "domain\\test group"); 

et les rediriger loin de la page si la revendication est null ..

Mais comment pourrais-je faire cela en annotant la classe.

je regardais la ClaimsPrincipalPermission

[ClaimsPrincipalPermission(SecurityAction.Demand, Resource="", Operation="")] 

mais pour la vie de moi ne peut pas voir ce qu'il faut mettre en ressources et de l'exploitation. Comment puis-je obtenir ma réclamation renvoyée par adfs dans un claimsprincipalpermission. Ai-je besoin d'écrire beaucoup de cours personnalisés pour le faire?

Merci,

Répondre

4

Vous devrez créer votre propre classe AuthorizationManager qui hérite de ClaimsAuthorizationManager et remplacer la méthode CheckAccess(). Cette méthode sera appelée pour toute méthode décorée avec l'attribut ClaimsPrincipalPermission. Un objet AuthorizationContext contenant la chaîne Resource, la chaîne Operation et l'objet IPrincipal contenant toutes les revendications de l'utilisateur actuel seront transmis. Dans cette méthode, vous pouvez analyser ces données comme vous le souhaitez pour déterminer l'accès et renvoyer true ou false. Dans les exemples WIF SDK, vous trouverez un projet d'application de console simple appelé ClaimsAuthorization qui le démontre. Il utilise la ressource et l'opération pour rechercher dans le fichier de configuration de l'application les revendications dont l'utilisateur a besoin et renvoie true ou false en conséquence. Bien sûr, vous n'avez pas à faire cela, vous pouvez utiliser toute autre logique que vous choisissez.

L'échantillon est généralement sous C: \ Program Files (x86) \ Windows Identity Foundation SDK \ v4.0 \ Samples \ Extensibilité \ Autorisation basée sur les revendications

Hope qui aide