web-dev-qa-db-fra.com

Utilisation d'une autorisation basée sur une revendication

Le nouveau code ASP.NET 4.5 a "re-parenté" le fournisseur de rôles ASP.NET à un fournisseur de revendications.

Ce que j'essaie de comprendre, à quoi ressemblerait un exemple d'autorisation "basé sur les revendications" (de préférence dans MVC4)? Comment mon attribut d'autorisation interagit-il ou non avec cette capacité? L'API WebSecurity and Roles n'a pas changé; il n'y a pas de signature "DoesUserHaveClaim ()". De même, la manière dont l'attribut Authorize interagit avec les revendications n'est pas claire.

Cette fonctionnalité "autorisation de réclamation" était-elle principalement destinée à OAuth? Si oui, comment les réclamations sont-elles transmises à ma demande? Un biscuit? Ou cette fonctionnalité de fournisseur de revendications était-elle destinée à une utilisation plus large?

En bref, quelle est l'histoire de l'utilisation d'un ClaimsPrincipal?

La chose la plus proche que j'ai vue de quelque chose qui a un sens est cette discussion . Mais je soupçonne que c'est daté - cela devrait être comparé à ce que le modèle de projet Internet MVC4 produit. Et même alors, il ne suggérait toujours pas comment utiliser l'attribut Authorize avec la configuration.

METTRE À JOUR

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

  1. La section des remarques de ClaimsPrincipal explique que les API WebSecurity, Roles et AuthorizeAttribute se résument en fait à des vérifications de revendications si nécessaire.
  2. n exemple MVC4 basé sur les revendications est ici (avec d'autres).
  3. La base l'histoire SAML est montrée ici .
37
Brent Arias

La sécurité basée sur les revendications permet de dissocier votre modèle de sécurité de votre domaine d'application. Une réclamation peut être tout ce que vous souhaitez joindre à l'identité de l'utilisateur, comme un e-mail, un numéro de téléphone ou un indicateur 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 une application ASP.NET, vous devez déterminer les rôles que vous souhaitez autoriser et 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 mêle votre modèle de sécurité à votre application. Dans les revendications, vous avez beaucoup plus de flexibilité et il est plus courant de configurer un schéma 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 de votre processus d'autorisation, découplant efficacement la sécurité de votre application. Voir ClaimsPrincipalPermissionAttribute pour un exemple de cette technique.

La sécurité basée sur les revendications est requise avec OAuth mais elle fonctionne également avec d'autres schémas d'autorisation. Les revendications personnalisées que vous utilisez dans votre application sont accessibles depuis ClaimsPrincipal.Current . Il existe également des techniques pour stocker ces informations dans des cookies, bien que le pipeline de sécurité ASP.NET ne le fasse pas par défaut.

La discussion à laquelle vous faites référence concerne Windows Identity Foundation (WIF) qui fait maintenant partie de .NET en 4.5 et c'est pourquoi l'identité basée sur les revendications est un citoyen de première classe. Tous les types principaux héritent de ClaimsPrincipal. Pour un bon aperçu de la sécurité basée sur les revendications, consultez cet ebook gratuit " A Guide to Claims-Based Identity and Access Control (2nd Edition) ". Un véritable expert dans ce domaine est Dominick Baier et son blog regorge d'informations utiles sur ce sujet. Il a également un excellent cours de formation en ligne sur Pluralsight appelé " Identity & Access Control in ASP.NET 4.5 ".

33
Kevin Junghans