37 votes

Utilisation de l'autorisation basée sur une revendication

La nouvelle ASP.NET 4.5 code a "re-eu" l'ASP.NET RoleProvider à un ClaimsProvider.

Ce que j'essaie de comprendre, est ce qui serait un "revendications" fondé sur l'exemple de l'autorisation ressembler (de préférence dans MVC4)? Comment mon Autoriser attribut interagir, ou pas, avec cette capacité? Le WebSecurity et les Rôles de l'API havn pas changé; il n'y a pas de "DoesUserHaveClaim()" signature. De même, il n'est pas clair comment l'Autoriser attribut interagit avec des réclamations.

A cette "les demandes d'autorisation de" fonction principalement destiné aux OAuth? Si oui, comment sont les revendications transmis à mon application? Un cookie? Ou était-ce les revendications fournisseur de fonctionnalités destinées à une utilisation plus large?

En bref, qu'est-ce que l'histoire à l'aide d'un ClaimsPrincipal?

La chose la plus proche que j'ai vu à quelque chose qui fait un peu de sens, est cette discussion. Mais je soupçonne que c'est datée - il doit être comparé à ce que le MVC4 internet modèle de projet de produit. Et même alors, il n'a toujours pas suggérer comment utiliser l'Autoriser l'attribut avec le programme d'installation.

Mise à JOUR

J'ai trouvé les réponses à mes questions à partir de ces sources:

  1. La section remarques de ClaimsPrincipal explique que WebSecurity, les Rôles et les AuthorizeAttribute Api n'en fait bouillir vers le bas pour les revendications des vérifications nécessaires.
  2. Une basée sur les revendications MVC4 exemple est ici (avec d'autres).
  3. La base SAML histoire est montrée ici.

33voto

Kevin Junghans Points 10012

Basée sur les revendications de la sécurité permet de découpler votre modèle de sécurité à partir de votre domaine d'application. Une réclamation peut être tout ce que vous voulez joindre à l'identité de l'utilisateur, tel qu'un e-mail, numéro de téléphone, ou un drapeau indiquant si l'utilisateur est un super utilisateur. Cela vous donne la flexibilité ultime sur la façon dont vous souhaitez configurer votre processus d'autorisation. Historiquement, dans un ASP.NET application, vous devez déterminer quels sont les rôles que vous souhaitez autoriser et de les appliquer lors de la programmation de votre application. Ensuite, vous vérifiez si l'utilisateur est dans le rôle pour les autoriser. Cela se mêle de votre modèle de sécurité avec votre application. Dans la base de revendications que vous avez beaucoup plus de flexibilité et il est plus typique de l'installation d'un système d'autorisation qui prend une ressource (ex: Commandes dans un système de gestion des commandes) et une opération (ex: lecture, écriture, exécution) comme paramètres d'entrée dans votre processus d'autorisation, de manière efficace le découplage de sécurité à partir de votre application. Voir ClaimsPrincipalPermissionAttribute pour un exemple de cette technique.

Basée sur les revendications de la sécurité est nécessaire avec OAuth, mais il fonctionne bien avec d'autres régimes d'autorisation ainsi. Les revendications personnalisées que vous utilisez dans votre application sont accessibles à partir de ClaimsPrincipal.Actuel. Il existe des techniques pour stocker cette information dans les cookies, bien que l'ASP.NET la sécurité du pipeline de ne pas le faire par défaut.

La discussion de la référence est pour Windows Identity Foundation (WIF), qui fait maintenant partie de .NET 4.5 et c'est pourquoi identité basée sur les revendications est un citoyen de première classe. Tous les Principaux types héritent de ClaimsPrincipal. Pour un bon aperçu de sécurité basés sur les revendications regarder ce gratuit ebook "Guide Basée sur les Revendications d'Identité et de Contrôle d'Accès (2e Édition)". Un véritable expert dans ce domaine est Dominick Baier et son blog est calées plein d'informations utiles sur ce sujet. Il a également une grande cours de formation en ligne sur Pluralsight appelé "Identité et de Contrôle d'Accès dans ASP.NET 4.5".

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X