Je suis toujours confus à propos de toutes ces choses sur l'identité.
D'abord, je suis toujours confus de la différence entre les rôles, les politiques/les revendications. D'après ce que j'ai lu, les rôles sont l'ancienne façon de faire les choses et ont été conservés pour la compatibilité descendante, cela signifie-t-il que AspNetRoleClaims fait partie de cette compatibilité descendante?
Je pense que je comprends les revendications et les politiques lorsque je pense à elles individuellement, comme la politique est essentiellement un ensemble de règles qui doivent passer et donne la possibilité de changer les règles sans avoir à parcourir tout le code et changer les rôles.
S'il s'agissait d'une réclamation, c'est essentiellement une source de confiance qui se porte garant de cet utilisateur (c'est-à-dire son âge, qui pourrait provenir d'une source gouvernementale).
Maintenant, ce qui m'embrouille, c'est de tout rassembler.
J'ai généré les tables d'identité et voir
AspNetUsers
AspNetUserRoles
AspNetRoles
AspNetRoleClaims
AspNetUserClaims
AspNetUserLogins
J'obtiens ce que la table AspNetUsers fait et AspNetUserLogins (semble être s'ils utilisent comme des fournisseurs de connexion externes).
Je suis confus sur la différence entre AspNetRoleClaims et AspNetUserClaims. Dois-je simplement utiliser AspNetUserClaims ou dois-je tout utiliser?
Dis que j'ai ce secenario
J'ai une entreprise qui a de nombreuses succursales, dans chaque succursale, ils seront administrateurs de cette succursale, ils ont le plein pouvoir sur la succursale et peuvent faire tout sauf rien dans une autre succursale. Au niveau de l'entreprise, il y aura un administrateur qui peut tout faire au niveau de l'entreprise et de n'importe quelle succursale. Enfin, j'ai une personne dans la branche qui peut simplement ajouter de nouveaux employés.
À quoi tout cela ressemble-t-il? Dois-je faire 3 rôles?
CompanyAdmin
BranchAdmin
AddUsersAtBranchLevel (or is this some sort of claim??)
What do the tables look like? Is there anything going to be in AspNetRoleClaims? AspNetUserClaims?
Maintenant, je peux créer une stratégie pour vérifier si l'utilisateur est un administrateur de branche et s'il essaie de modifier sa branche?
Ou est-ce que j'oublie tout ce que j'ai de rôle dans les AspNetUserClaims
User1 CanAddUserToBranch true
User1 CanDeleteUserBranch true
User1 CanAddUserToCompany true
Ensuite, dans mon code, créez ces différents "ClaimTypes" et créez une politique qui voit s'ils ont dit "CanAddUserToBranch", puis une autre revendication ou politique pour vérifier dans quelle branche ils se trouvent pour vous assurer qu'ils essaient d'ajouter quelque chose à la bonne branche. ?
Éditer
Pensez-vous que j'ai besoin d'utiliser une autorisation basée sur les ressources?
+------------------+------------------+
| Table | Description |
+------------------+------------------+
| AspNetUsers | The users. |
| AspNetRoles | The roles. |
| AspNetUserRoles | Roles of users. |
| AspNetUserClaims | Claims by users. |
| AspNetRoleClaims | Claims by roles. |
+------------------+------------------+
Si vous trouvez les rôles et les revendications déroutants, c'est probablement parce que les rôles sont un cas spécial de revendications, c'est-à-dire que les rôles sont des revendications.
Rôle vs politique
Pour l'autorisation basée sur les rôles, le système d'autorisation vérifie si l'utilisateur a reçu les rôles requis pour accéder à la ressource donnée.
Pour l'autorisation basée sur une stratégie, une logique métier est exécutée pour décider si l'accès aux ressources doit être autorisé.
Dis que j'ai ce scénario
J'ai une entreprise qui a de nombreuses succursales, dans chaque succursale, ils seront administrateurs de cette succursale, ils ont le plein pouvoir sur la succursale et peuvent faire tout sauf rien dans une autre succursale. Au niveau de l'entreprise, il y aura un administrateur qui peut tout faire au niveau de l'entreprise et de n'importe quelle succursale. Enfin, j'ai une personne dans la branche qui peut simplement ajouter de nouveaux employés.
Voici une façon de procéder:
2 rôles:Admin
, TheRoleThatCanAddUsers
ne revendication appelé Branch
qui peut prendre un identifiant de branche (ou toute autre chose pour identifier la branche). Les administrateurs d'entreprise peuvent utiliser une valeur telle que "CompanyWide"
ou 0
ou -1
.
Créez maintenant une stratégie qui vérifie le rôle et la revendication de branche et décide si l'utilisateur doit être autorisé.