Quelles sont les revendications dans ASP .NET Identity

174

Quelqu'un peut-il expliquer ce que signifie le mécanisme de revendication dans le nouvel ASP.NET Identity Core?

Comme je peux voir, il y a une AspNetUserLoginstable, qui contient UserId, LoginProvideret ProviderKey.

Mais, je ne peux toujours pas comprendre ou trouver des informations sur le moment où les données sont ajoutées au AspNetUserClaimstableau et dans quelles situations ce tableau est-il utilisé?

Maxim Joukov
la source

Réponses:

207

que signifie le mécanisme de revendication dans le nouvel ASP.NET Identity Core?

Il existe deux approches d'autorisation courantes basées sur le rôle et la revendication.

Sécurité basée sur les rôles

Un utilisateur est affecté à un ou plusieurs rôles grâce auxquels l'utilisateur obtient des droits d'accès. De plus, en affectant un utilisateur à un rôle, l'utilisateur obtient immédiatement tous les droits d'accès définis pour ce rôle.

Sécurité basée sur les revendications

Une identité basée sur les revendications est l'ensemble des revendications. Une revendication est une déclaration qu'une entité (un utilisateur ou une autre application) fait sur elle-même, ce n'est qu'une revendication. Par exemple, une liste de revendications peut avoir le nom de l'utilisateur, l'adresse e-mail de l'utilisateur, l'âge de l'utilisateur, l'autorisation de l'utilisateur pour une action. Dans la sécurité basée sur les rôles, un utilisateur présente les informations d'identification directement à l'application. Dans un modèle basé sur les revendications, l'utilisateur présente les revendications et non les informations d'identification à l'application. Pour qu'une revendication ait une valeur pratique, elle doit provenir d'une entité à laquelle l'application fait confiance.

Les étapes ci-dessous illustrent la séquence de ce qui se produit dans un modèle de sécurité basé sur les revendications:

  1. L'utilisateur demande une action. L'application de partie de confiance (RP) demande un jeton.
  2. L'utilisateur présente les informations d'identification à l'autorité émettrice que l'application RP approuve.
  3. L'autorité émettrice émet un jeton signé avec des revendications, après avoir authentifié les informations d'identification de l'utilisateur.
  4. L'utilisateur présente le jeton à l'application RP. L'application valide la signature du jeton, extrait les revendications et, en fonction des revendications, accepte ou refuse la demande.

Mais, je ne peux toujours pas comprendre et trouver des informations, quand les données s'ajoutent à AspNetUserClaims et quelles situations cette table utilise-t-elle?

Lorsque vous êtes dans une situation où une sécurité basée sur les rôles n'est pas utilisée et que vous avez choisi d'utiliser la sécurité basée sur les revendications, vous devez utiliser la table AspNetUserClaims. Pour savoir comment utiliser les revendications dans ASP.NET Identity, consultez le lien ci-dessous pour plus d'informations.

http://kevin-junghans.blogspot.com/2013/12/using-claims-in-aspnet-identity.html

Mettre à jour

Quelle heure ai-je pour utiliser la sécurité basée sur les rôles et quand basée sur les revendications? Pourriez-vous s'il vous plaît écrire quelques exemples?

Il n'y a pas de situation très claire où vous utiliseriez ou non la sécurité basée sur les rôles ou les revendications, pas comme un cas où vous utiliseriez A plutôt que B.

Cependant, le contrôle d'accès basé sur les revendications permet une meilleure séparation des règles d'autorisation de la logique métier principale. Lorsque les règles d'autorisation changent, la logique métier de base reste inchangée. Il y aura des situations dans lesquelles vous préférerez peut-être utiliser l'approche basée sur les revendications.

Parfois, les réclamations ne sont pas nécessaires. Ceci est un avertissement important. Les entreprises disposant d'une multitude d'applications internes peuvent utiliser l'authentification Windows intégrée pour bénéficier de nombreux avantages fournis par les revendications. Active Directory fait un excellent travail de stockage des identités des utilisateurs, et comme Kerberos fait partie de Windows, vos applications n'ont pas besoin d'inclure beaucoup de logique d'authentification. Tant que chaque application que vous créez peut utiliser l'authentification Windows intégrée, vous avez peut-être déjà atteint votre utopie d'identité. Cependant, il existe de nombreuses raisons pour lesquelles vous pourriez avoir besoin d'autre chose que l'authentification Windows. Vous pouvez avoir des applications Web utilisées par des personnes qui n'ont pas de compte dans votre domaine Windows. Une autre raison pourrait être que votre entreprise a fusionné avec une autre entreprise et que vous vous rencontrez des difficultés pour vous authentifier sur deux forêts Windows qui n'ont pas (et peuvent ne jamais avoir) de relation d'approbation. Vous souhaitez peut-être partager des identités avec une autre société qui possède des applications non.NET Framework ou vous devez partager des identités entre des applications exécutées sur différentes plates-formes (par exemple, le Macintosh). Ce ne sont là que quelques situations dans lesquelles l'identité basée sur les revendications peut être le bon choix pour vous.

Pour plus d'informations, veuillez visiter http://msdn.microsoft.com/en-us/library/ff359101.aspx

Lin
la source
6
Merci pour la réponse, mais je ne comprends toujours pas, quelle heure ai-je pour utiliser la sécurité basée sur les rôles et quand basée sur les revendications? Pourriez-vous s'il vous plaît écrire quelques exemples?
Maxim Zhukov
1
@ FSou1, il n'y a pas vraiment de cas où vous utiliseriez une approche basée sur les rôles ou basée sur les revendications. Voir ma réponse mise à jour pour plus de clarté.
Lin
The user presents the credentials to the issuing authority that the RP application trusts.Que pouvez-vous utiliser en tant qu'autorité / émetteur? Quelques exemples seraient bien. J'ai rouge l'article sur le site msdn (le lien que vous avez fourni), mais ils ne donnent qu'un seul exemple: ADFS, y a-t-il d'autres options? Impossible de trouver ces informations nulle part. :(
Jo Smo
1
Un guide du contrôle d'accès et d'identité basé sur les revendications fournit une explication complète des approches basées sur les revendications et le contrôle d'accès basé sur les rôles (RBAC). Le livre complet est disponible gratuitement et en ligne via les téléchargements MS. goodreads.com/book/show/…
Chris Mylonas
2
Le livre Microsoft gratuit RBAC mentionné par @ChrisMylonas peut être téléchargé gratuitement auprès de Microsoft ici: microsoft.com/en-us/download/details.aspx?id=28362
OzBob
16

Juste pour ajouter plus sur ce que @Lin a dit ci-dessus. Je me réfère spécifiquement à la question:

Quelle heure ai-je pour utiliser la sécurité basée sur les rôles et quand basée sur les revendications? Pourriez-vous s'il vous plaît écrire quelques exemples?

Prenons un cas où vous avez un système de pointage où vous avez un technicien et un gestionnaire. À la fin de chaque semaine, le technicien doit organiser des rapports avec des informations de pointage indiquant les heures de travail des artisans travaillées pour cette semaine, qui sont consolidées et utilisées par la paie. Ces systèmes doivent souvent être modifiés ou corrigés avant la soumission des rapports finaux, car vous ne voulez pas payer trop cher ou sous-payer vos employés. Vous pouvez utiliser une Role-Basedapproche pour le responsable et le technicien en créant un fichier Manager Roleet Technician Role. Mais Manager Rolec'est celui qui a la possibilité d'accéder et de modifier les informations de pointage des artisans. D'autre part, vous pouvez avoir leTechnician Rolesans ces capacités pour accéder à ces informations. Mais voici la partie intéressante; Un gestionnaire peut faire une réclamation et permettre à un technicien d'accéder aux systèmes de pointage et de faire des rapports. Ainsi, une réclamation ne peut être faite que pour un accès sans modification ou peut être faite avec des capacités d'accès et de modification.

C'est plus comme dire: Eh bien, par défaut, en tant que gestionnaire, je peux accéder à certaines informations auxquelles mon technicien ne peut pas accéder. Mais je ne suis pas toujours au bureau? que puis-je faire pour qu'il puisse encore faire le travail même lorsque je ne suis pas là? Pour résoudre ce problème, le système peut avoir la fonctionnalité permettant aux gestionnaires de créer des réclamations pour les personnes n'ayant pas accès à certaines informations spécifiques. Nous les voyons souvent partout dans nos systèmes ERP. Un utilisateur sans accès à certains modules et lorsqu'il est promu, il donne la permission à plus de modules du système ERP, gardant parfois le même rôle d'utilisateur.

Voici un exemple que vous pouvez envisager pour mieux comprendre les revendications et les rôles.

Mosia Thabo
la source
0

Il existe deux types d'authentification dans l'identité ASP.Net.

  1. Basé sur le rôle
  2. Basé sur une réclamation

Vous pouvez utiliser l'un d'entre eux ou les deux en même temps. Utilisez la fonction basée sur les rôles lorsque vous avez des choses très définies. Par exemple, vous créez deux rolea enseignant et étudiant. Seul l'enseignant peut ajouter des matières. Vous avez donc attribué le rôle d'enseignant aux utilisateurs dont vous souhaitez avoir accès pour ajouter des sujets.

La base de réclamation est plus flexible. Supposons que vous ayez une exigence que certains étudiants peuvent également ajouter des matières. Dans ce cas, vous devez créer un autre rôle qui peut être étudiant et accéder pour ajouter un sujet. Mais si vous utilisez la fonction de réclamation, ce serait très facile. Créez simplement une revendication comme addSubject et attribuez-la à n'importe quel utilisateur auquel vous souhaitez accéder pour ajouter aubject.

umer
la source