Role-based access control (RBAC) vs basée sur les Revendications de contrôle d'accès (CCCB) dans ASP.NET MVC
Quels sont les principaux avantages de l'utilisation de Le CCCB vs RBAC? Quand est-il préférable d'utiliser le CCCB et quand est-il préférable d'utiliser RBAC?
J'essaie de comprendre les concepts généraux de la CCCB modèle, mais l'idée générale est toujours pas clair pour moi.
- Ces concepts sont encore très vague pour moi. Ils semblent faire la même chose. L'un est juste un des rôles avec une valeur?
Vous devez vous connecter pour publier un commentaire.
Je vais tenter de vous montrer comment vous pouvez bénéficier de Demande de Contrôle d'Accès dans un ASP.NET MVC Contexte.
Lorsque vous êtes à l'aide de Rôle basé sur l'authentification, si vous avez une action pour la création d'un client et que vous voulez que les gens qui sont dans la "Vente" rôle devrait être en mesure de le faire, alors vous écrire du code comme ceci:
Plus tard, vous avez rendu compte que, parfois, les gens de la "Commercialisation" rôle devrait être en mesure de créer de la Clientèle. Ensuite, vous mettez à jour votre méthode d'Action comme ça
Maintenant, vous avez réalisé que les gens du marketing ne doit pas être en mesure de créer de la Clientèle, mais il n'est pas possible d'attribuer un rôle différent pour les gens qui sont dans le Marketing. Donc, vous êtes obligé de permettre à tous les gens du marketing de créer des Clients.
vous avez repéré un autre problème, à tout moment vous décidez que les gens du Marketing devraient être autorisés à créer des clients, vous devez mettre à jour tous vos MVC méthodes d'Action Autoriser attribut, de compiler votre application, les tests et le déploiement. Quelques jours plus tard, vous avez décidé, pas de marketing, mais un autre rôle devrait être autorisé à faire la tâche, de sorte que vous rechercher dans votre base de code et de supprimer tous les "Commercialisation" d'Autoriser l'attribut et ajouter votre nouveau nom de rôle en Autoriser l'attribut... Pas une bonne solution. À ce stade, vous pourriez vous rendre compte d'un besoin de l'Autorisation du Contrôle d'Accès Basé.
Basés sur des autorisations de contrôle d'accès est une manière d'attribuer des diverses autorisations à différents utilisateurs et vérifier si un utilisateur est autorisé à exécuter une action dans le code au moment de l'exécution. Après vous affecter de diverses autorisations à différents utilisateurs, vous vous rendez compte que vous avez besoin pour permettre à certains utilisateurs d'exécuter du code si l'utilisateur dispose de certains biens comme le "Facebook de l'Utilisateur", "temps Long de l'Utilisateur", etc. Permettez-moi de donner un exemple. Dites que vous voulez autoriser l'accès à une page spécifique si l'utilisateur est connecté à l'aide de Facebook. Maintenant, voulez-vous de créer un permission "Facebook" pour que l'utilisateur ? Non, 'Facebook' ne ressemble pas à une autorisation. N'est ce pas ? Plutôt, il sonne comme une revendication. Dans le même temps, les Autorisations peuvent sembler Demande trop !! Donc, il est préférable de vérifier les allégations et autoriser l'accès.
Maintenant, revenons à l'exemple concret d'une demande de contrôle d'accès.
Vous pouvez définir un ensemble de revendications comme ceci :
"CanCreateCustomer", "CanDeleteCustomer", "CanEditCustomer".. etc..
Maintenant, vous pouvez décorer votre Méthode d'Action comme ceci:
(veuillez noter, [ClaimAuthorize(Permission="CanCreateCustomer")] ne peuvent pas être construits en MVC bibliothèque de classe, je suis juste montrer comme un exemple, vous pouvez utiliser une bibliothèque de classe qui a un tel Attribut définition de la classe)
Maintenant, vous pouvez voir que, CreateCustomer méthode d'action aura toujours besoin de la permission 'CanCreateCustomer" et il ne changera jamais, ou peu de changement. Donc, dans votre base de données, vous créez une table des autorisations (réclamations) et l'utilisateur l'autorisation de la relation. À partir de votre panneau d'administration, vous pouvez définir des autorisations (demande) pour chaque utilisateur qui peut faire quoi. Vous pouvez assigner 'CanCreateCustomer' autorisation (demande) à quelqu'un que vous aimez et seulement autorisée, l'utilisateur sera en mesure de créer de la clientèle et a permis l'utilisateur sera en mesure de créer seul client, et rien d'autre (sauf si vous affectez d'autres autorisations pour le même utilisateur).
Ce modèle de sécurité vous offre un code propre pratique. En outre, lorsque vous écrivez votre Méthode d'Action, vous n'avez pas à penser à qui peut utiliser cette méthode, mais vous pouvez toujours être assuré que celui qui est à l'aide de cette méthode permettra d'avoir l'autorisation appropriée (réclamation) donné par l'Admin. Ensuite, l'Administrateur peut décider qui sera en mesure de faire quoi. Ne vous en tant que développeur. C'est comment votre logique métier est séparé de la Sécurité logique.
Chaque fois que quelqu'un se connecte, votre application va vérifier toutes les autorisations disponibles pour l'utilisateur et que l'autorisation (demande de remboursement) seront disponibles que d'autres propriétés de l'utilisateur actuellement connecté (généralement de l'ensemble de revendications est stockée en tant que témoin de l'utilisateur connecté), de sorte que vous n'avez pas à vérifier la permission ensemble tout le temps à partir de la base de données. La ligne du bas est, vous obtenez plus de contrôle de votre sécurité logique dans votre demande si vous appliquez réclamation fondée d'accès plutôt que de l'accès basé sur un rôle. En fait, un Rôle peut être considéré comme une Demande trop.
Si votre application est une très petite application où il n'y aurait que 2 rôles : le Client et Admin et il n'y a aucune chance que le Client sera en mesure de faire quelque chose d'autre que ce qu'ils sont censés faire dans votre application, alors peut-être, le Rôle du contrôle d'accès basé servira le but, mais en tant que votre demande se développe, vous allez commencer à ressentir le besoin de demande de contrôle d'accès à un certain point.
CanCreateCustomer, CanViewAdCampaigns
Je ne suis pas entièrement d'accord avec Emran la réponse de
Est naïf
La question est de savoir comment
est différente de
Si les deux sont tout aussi bon, pourquoi nous avons besoin de demande de règlement ?
Je pense que parce que
Revendications concept est plus générique par rapport au Rôle
Dans le contexte de l'exemple ci-dessus, nous pouvons dire "CustomerCreator" est une revendication de type "rôle" fourni par "Asp.NETroleProvider"
D'autres exemples de revendications.
"AAA" est la revendication de type "MYExamSite.Score" fourni par "MYExamSite.com"
"Or" est la revendication de type "MYGYM.Membershiptype" fourni par "MYGYMApp"
Accepté la réponse semble position Rôles comme un objet contondant et Prétend comme un outil flexible, mais sinon les rend semblent presque identiques. Malheureusement, ce positionnement ne rend pas service à la notion de revendications et peut fondamentalement refléter une légère incompréhension de leur but.
Rôles existent et n'ont de sens que dans une étendue implicite. Généralement c'est une application ou d'un champ organisationnel (c'est à dire de Rôle=Administrateur). Demandes, sur l'autre main, peut-être "fait" par n'importe qui. Par exemple, Google authentification peut produire des réclamations, y compris un utilisateur "e-mail", ainsi fixation de cet e-mail à une identité. Google fait la demande, l'application choisit de comprendre et d'accepter cette demande. L'application elle-même peut ensuite fixer une affirmation appelé "authenticationmethod" (comme ASP.NET MVC, Base de l'Identité n') avec une valeur de "Google". Chaque demande comprend une étendue de sorte qu'il est possible de déterminer si une réclamation a un sens à l'extérieur, au niveau local, ou les deux (ou plus finement que nécessaire.)
Les points clés sont que toutes les demandes sont explicitement attaché à une identité et comprennent une portée explicite. Ces revendications peuvent bien sûr être utilisées pour l'autorisation et ASP.NET MVC fournit un support pour que via l'Autoriser attribut, mais ce n'est pas le seul ou même le principal objet de Réclamations. Il n'est certainement pas à la distinguer de Rôles, qui peut être utilisé exactement de la même manière pour localement étendue de l'autorisation.
Donc on peut choisir d'utiliser des Rôles, ou de Réclamations, ou les deux, pour les fins de l'autorisation et probablement trouver aucun avantage ou désavantage soit, tant que les Rôles et les Réclamations sont localement étendue. Mais si, par exemple, l'autorisation dépend de l'identité extérieure revendications, les Rôles seront insuffisantes. Vous devez accepter la demande externe et de les traduire dans un localement étendue rôle. Il n'y a pas forcément quelque chose de mal avec cela, mais il introduit une couche d'indirection et les rejets contexte.
J'ai mis en œuvre des modèles de sécurité de fois et ont eu pour envelopper ma tête autour de ces concepts. Après avoir fait plusieurs fois, ici est ma compréhension de ces concepts.
Quels Sont Les Rôles
Rôle = Le union des Utilisateurs et des Autorisations.
D'une part, un Rôle est un ensemble d'Autorisations. J'aime appeler un Profil d'Autorisation. Lors de la définition d'un Rôle fondamentalement, vous ajoutez un tas d'Autorisations dans ce Rôle en ce sens un Rôle est un Profil d'Autorisation.
D'autre part, un Rôle est un ensemble d'Utilisateurs. Si j'ajoute Bob et Alice pour le Rôle de "responsables" puis "Gestionnaires" contient maintenant une collection de deux Utilisateurs d'un Groupe.
La vérité est qu'un Rôle est à la FOIS une collection d'Utilisateurs et une collection des Autorisations mettre ensemble. Visuellement, il peut être considéré comme un diagramme de Venn.
Qu'est ce qu'un Groupe de
Groupe = Collection d'Utilisateurs
Un "Groupe" est strictement un ensemble d'Utilisateurs. La différence entre un Groupe et un Rôle est un Rôle a aussi une collection d'Autorisations, mais un Groupe ne dispose que d'un ensemble d'Utilisateurs.
Qu'est ce qu'une Autorisation
Permission = Ce qu'un objet peut faire
Ce qui est un Ensemble d'Autorisation
Autorisation Set = Une Collection des Autorisations
Dans un robuste système RBAC, les Autorisations peuvent également être regroupées comme les Utilisateurs. Alors que les Groupes sont une collection d'Utilisateurs seulement, un Ensemble d'Autorisation est une collection des Autorisations uniquement. Cela permet à un administrateur d'ajouter des collections entières d'Autorisations de Rôles à la fois.
Comment les Utilisateurs, les Groupes, les Rôles et les Autorisations de se Réunir
Dans un robuste système RBAC, les Utilisateurs peuvent être ajoutés à un Rôle individuellement pour créer la collection d'Utilisateurs dans le Rôle ou les Groupes peuvent être ajoutés à un Rôle pour ajouter un groupe d'Utilisateurs pour le Rôle à la fois. De toute façon, le Rôle obtient sa collection d'Utilisateurs d'être ajoutés séparément ou en ajoutant des Groupes pour le Rôle ou par ajout d'un mélange d'Utilisateurs et des Groupes pour le Rôle. Les autorisations peuvent être considérés de la même manière.
Autorisations peuvent être ajoutés à des Rôles individuellement pour créer la collection des Autorisations à l'intérieur de la Rôle ou les Jeux d'autorisations peuvent être ajoutés à un Rôle. Enfin, un mélange d'Autorisations et d'Ensembles d'autorisations peuvent être ajoutés à un Rôle. De toute façon, le Rôle obtient sa collection des Autorisations d'être ajoutés séparément ou en ajoutant des Ensembles d'autorisations à un Rôle.
Le but entier de Rôles est de marier les Utilisateurs à des Autorisations. Par conséquent, un Rôle est l'UNION des Utilisateurs et des Autorisations.
Que Sont Les Revendications
Demande = Ce qu'un Objet "est"
Revendications ne sont PAS les Autorisations. Comme l'a souligné dans les réponses précédentes, une Demande est ce qu'un objet "" n'est pas un "peut faire".
Revendications ne remplacent pas les Rôles ou les Autorisations, ils sont des éléments d'informations supplémentaires que l'on peut utiliser pour prendre une décision d'Autorisation.
Quand Utiliser des Revendications
J'ai trouvé Prétend être utile lorsqu'une décision d'Autorisation doit être effectuée lorsque l'Utilisateur ne peut pas être ajouté à un Rôle ou la décision n'est pas basée sur l'association de l'Utilisateur de l'Autorisation. L'exemple de Facebook de l'Utilisateur sont les causes de cette. Un Facebook de l'Utilisateur ne peut pas être quelqu'un qui est ajouté à un "Rôle" ... ils sont juste certaines Visiteur authentifié par le biais de Facebook. Si elle ne rentre pas parfaitement dans RBAC c'est un morceau d'informations pour prendre une décision d'autorisation sur.
@CodingSoft utilisé la nuit un club métaphore dans une réponse précédente, à qui je tiens à souhaiter. Dans sa réponse, le permis de conduire a été utilisé comme un exemple qui contenait une série de Revendications dont la Date de Naissance représente l'une des Revendications et de la valeur de la DateOfBirth Réclamation est utilisé pour tester l'encontre de la règle d'autorisation. Le gouvernement qui a délivré le permis de conduire est l'autorité que donne la Revendication de l'authenticité. Par conséquent, dans un club de nuit scénario, le videur à la porte en la personne du permis de conduire, s'assure qu'il a été émis par une autorité de confiance en examinant si oui ou non c'est une fausse carte d'identité (c'est à dire doit être valide émise par le gouvernement ID), puis regarde la Date de Naissance (l'une des nombreuses réclamations sur un permis de conduire), puis utilise cette valeur pour déterminer si la personne est assez vieux pour entrer dans le club. Si oui, la personne passe la règle d'autorisation en vertu d'une Demande valide, non pas dans un Rôle.
Maintenant, avec cette base dans l'esprit, je voudrais maintenant étendre plus longuement. Supposons que le bâtiment où le night club est contient de bureaux, de chambres, d'une cuisine, d'autres étages, ascenseurs, un sous-sol, etc. où seuls les employés du club pouvez entrer. En outre, certains employés peuvent avoir accès à certains endroits que d'autres employés ne peuvent pas. Par exemple, un Gestionnaire peut avoir accès au bureau à l'étage au-dessus de que les autres employés ne peuvent pas accéder. Dans ce cas, il y a deux Rôles. Le gestionnaire et l'Employé.
Alors que les visiteurs l'accès au public de la nuit le club est autorisé par une seule revendication, comme expliqué ci-dessus, les employés ont besoin de l'accès par Rôle à d'autres non-public restreint chambres. Pour eux, un permis de conduire n'est pas suffisant. Ils ont besoin d'un Badge de l'Employé qu'ils consultent pour entrer dans les portes. Il y a quelque part un RBAC système qui accorde des badges dans le Rôle de Gestionnaire de l'accès à l'étage supérieur, et des badges dans le Rôle d'Employé accès à d'autres pièces.
Si, pour quelque raison que ce soit, certaines pièces doivent être ajoutées/supprimées par Rôle, ce qui peut être fait à l'aide de RBAC, mais il n'est pas un bon ajustement pour une Réclamation.
Autorisations dans le Logiciel
Codage des Rôles dans l'application est une mauvaise idée. Ce dur codes le but de le Rôle dans l'application. Ce que l'application doit avoir est juste Autorisations qui agissent comme des indicateurs de fonctionnalités. Où indicateurs de fonctionnalités sont accessibles par la configuration, les Autorisations sont rendus accessibles par l'Utilisateur à un Contexte de Sécurité qui est tiré par la collecte DISTINCTE des Autorisations recueillies auprès de tous les Rôles de l'Utilisateur a été placé. C'est ce que j'appelle les "Autorisations Effectives." L'application ne devrait présenter un menu d'éventuelles Autorisations à des fonctions /actions. Le RBAC système devrait faire le travail de marier ces Autorisations à des Utilisateurs par le biais de Rôles. De cette façon, il n'y a pas de codage en dur des Rôles et la seule fois où une Autorisation de changements, c'est quand il est retiré ou si un nouveau est ajouté. Une fois que l'Autorisation est ajouté au logiciel, il ne doit jamais être modifiée. Il ne doit être retiré que lorsque c'est nécessaire (c'est à dire quand une fonctionnalité est abandonnée dans une nouvelle version) et seulement de nouveaux peuvent être ajoutés.
Une note finale.
Subvention vs Refuser
Un robuste système RBAC et même un CCCB système devrait établir une distinction entre les Subventions et les Refus.
L'ajout d'une Autorisation à un Rôle devrait venir avec une SUBVENTION ou de REFUSER. Lorsque les Autorisations sont vérifiées, de toutes les Autorisations Accordées devraient être ajoutés à la liste des Utilisateurs des Autorisations Effectives. Puis après tout, c'est fait, une liste de refus d'Autorisations doit amener le système à supprimer les Autorisations de la liste des Autorisations Effectives.
Cela permet aux administrateurs de "tordre" le dernier des Autorisations d'un sujet. Il est préférable si les Autorisations peuvent également être ajoutés directement aux Utilisateurs. De cette façon, vous pouvez ajouter un Utilisateur à un Rôle de Gestionnaire et s'ils ont accès à tout, mais peut-être que vous souhaitez REFUSER l'accès à la Dame de Toilettes, car l'Utilisateur est un mâle. Si vous ajoutez le mâle de l'Utilisateur pour le Gestionnaire de Rôle, et ajoutez une Autorisation pour l'Utilisateur de l'objet avec le NIER donc, il faut seulement que la Dame de l'accès à la salle.
En fait, ce serait un bon candidat pour une Réclamation. Si l'Utilisateur dispose d'une Revendication de "sexe=masculin", puis d'être dans le Rôle de Gestionnaire donne accès à toutes les chambres, mais la Dame des salles de toilettes exige également la Revendication genre=femme et de la toilette des Hommes exige la Revendication sexe=masculin. De cette façon, on n'aurait pas à configurer un REFUSER l'autorisation de sexe masculin les Utilisateurs, car la Revendication de l'application se charge de tout pour tout le monde avec une seule règle d'autorisation. Toutefois, il pourrait être fait de toute façon.
Le point est que, avec le REFUS d'autorisation, il rend la gestion des Rôles plus facile parce que des exceptions peuvent être mis en œuvre.
Ci-dessous est un schéma que j'ai fait il y a longtemps que montre le modèle RBAC. Je n'ai pas de graphique pour les Créances, mais vous pouvez l'imaginer, ils sont juste des attributs attachés aux Utilisateurs, où qu'ils soient. Aussi, le schéma ne montre pas les Groupes (j'ai besoin de mettre à jour à un certain point).
J'espère que cette aide.
C'est un Diagramme de la RBAC Décrit ci-Dessus
Mise à jour le 7 avril 2019
Sur la base des commentaires de @Brent (merci) ... supprimé les références inutiles pour les réponses précédentes et a expliqué les principes de base de la "night club" métaphore fournis par @CodingSoft afin de rendre cette réponse compréhensible sans avoir à lire les autres réponses.
De façon plus générale, vous devriez envisager d'attribut de contrôle d'accès (ABAC). RBAC et ABAC les deux notions sont définies par le NIST, l'Institut National des Normes et de la Technologie. Le CCCB, d'autre part, est un modèle poussé par Microsoft qui est très similaire à l'ABAC.
Lire la suite ici:
Rôle est juste un type de Réclamation. Comme ça, il peut y avoir de nombreux autres types de demandes d'indemnisation, par exemple le nom d'utilisateur est l'un des type de revendication
Fondamentales entre RBAC et le CCCB est que:
RBAC: un utilisateur doit être affecté à un rôle pour être autorisé à effectuer une action.
CCCB : l'utilisateur doit disposer d'une réclamation auprès de la valeur correcte, comme prévu par la demande, être autorisé. Basée sur les revendications de contrôle d'accès est à la fois élégante à écrire et plus faciles à maintenir.
Côté que les demandes sont émises à la demande par une émission d'autoriser des services (Service de Sécurité Jeton STS) qui est approuvé par votre application (de la Partie de confiance)
Il est important de d'abord analyser ce que l'Authentification est requis pour les avant de décider quelle méthode est la meilleure. À partir de la documentation de Microsoft ci-dessous, il est dit "Une réclamation n'est pas ce que le sujet peut faire. Par exemple, vous pouvez avoir un permis de conduire délivré par un permis de conduire local de l'autorité. Votre permis de conduire est votre date de naissance sur elle. Dans ce cas, le nom de revendication serait DateOfBirth, la valeur de la réclamation serait votre date de naissance, par exemple 8 juin 1970, et l'émetteur serait le permis de conduire de l'autorité. Les revendications en fonction de l'autorisation, à sa plus simple expression, vérifie la valeur de la demande et permet l'accès à une ressource basée sur cette valeur. Par exemple si vous souhaitez accéder à un club de nuit le processus d'autorisation peut être:6"
La porte de l'agent de sécurité permettrait d'évaluer la valeur de votre date de naissance demande et s'ils font confiance à l'émetteur (le permis de conduire de l'autorité) avant de vous accorder l'accès.
À partir de cet exemple, nous pouvons voir que l'accès à un proche du club avec une Autorisation Basée sur les Revendications est très différente du type d'Autorisation qui seront requis par le personnel qui travaille dans le club de nuit, dans ce cas, le personnel de la boîte de nuit nécessitera une Autorisation basée sur les rôles qui n'est pas nécessaire pour le club de nuit de visiteurs de la boîte de nuit, les visiteurs ont un objectif commun à la boîte de nuit, donc, dans cette situation une Autorisation Basée sur les Revendications est adapté pour le club de nuit de visiteurs.
Autorisation basée sur les rôles
https://docs.microsoft.com/en-us/aspnet/core/security/authorization/roles
10/14/2016
Lorsqu'une identité est créée, elle peut appartenir à un ou plusieurs rôles. Par exemple, Tracy peuvent appartenir à l'Administrateur et les rôles d'Utilisateur, tandis que Scott ne peut appartenir à l'Utilisateur de rôle. La façon dont ces rôles sont créés et gérés dépend de la mémoire de sauvegarde de la procédure d'autorisation. Les rôles sont exposés aux développeur à travers le IsInRole méthode de la classe ClaimsPrincipal.
Autorisation Basée Sur Les Revendications
https://docs.microsoft.com/en-us/aspnet/core/security/authorization/claims
10/14/2016
Lorsqu'une identité est créé, il peut être affecté à un ou plusieurs des revendications émises par une partie de confiance. Une demande est une paire nom /valeur qui représente ce que le sujet est, pas de ce que le sujet peut faire. Par exemple, vous pouvez avoir un permis de conduire délivré par un permis de conduire local de l'autorité. Votre permis de conduire est votre date de naissance sur elle. Dans ce cas, le nom de revendication serait DateOfBirth, la valeur de la réclamation serait votre date de naissance, par exemple 8 juin 1970, et l'émetteur serait le permis de conduire de l'autorité. Les revendications en fonction de l'autorisation, à sa plus simple expression, vérifie la valeur de la demande et permet l'accès à une ressource basée sur cette valeur. Par exemple si vous souhaitez accéder à un club de nuit le processus d'autorisation peut être:
La porte de l'agent de sécurité permettrait d'évaluer la valeur de votre date de naissance demande et s'ils font confiance à l'émetteur (le permis de conduire de l'autorité) avant de vous accorder l'accès.
Une identité peut contenir plusieurs revendications à valeurs multiples et peuvent contenir plusieurs demandes du même type.
Il est également possible d'permet de gérer les rôles dans des réclamations manière.
Au lieu de créer de l'autorisation de rôles qui reflètent un rôle d'entreprise, créer des rôles qui reflètent l'action rôles, par exemple CreateCustomer, EditCustomer, DeleteCustomer. Annoter des méthodes nécessaires.
Il n'est pas une simple question de cartographier les individus à un ensemble de rôles, d'autant que le rôle de la liste s'agrandit. Par conséquent, vous aurez besoin pour gérer les rôles à un plus bas niveau de granularité (par exemple, les Ventes, le Marketing) et la carte du Rôle de l'action rôles requis. I. e., ajouter un utilisateur à un rôle d'entreprise et des cartes à l'requis (action) rôles de l'autorisation existante de la table.
Vous pouvez même remplacer le rôle des entreprises et ajouter une personne à un rôle d'action directement.
Parce que vous construisez sur le dessus de ce qui fonctionne déjà, vous n'avez pas annuler l'Autorisation existante processus. Vous avez besoin seulement d'un peu plus de tables pour mettre en œuvre cette approche
Je pense que cette question pourrait être une réponse à partir de la base de données prospective.
si vous avez remarqué comment les tables impliquées dans cette implantation, vous trouverez les éléments suivants
L'usage de ces tables peut être modifié à un moment de l'utilisateur/vie de l'application, le temps pour correspondre à des besoins spécifiques.
Considèrent comme le début de l'étape de "responsable des Achats" (PM), on pourrait avoir trois approches
Application remplit AspNetUserRoles avec une ligne de subventions " PM " droit pour acheter. À la question de l'achat de commande avec un montant, l'utilisateur a seulement besoin "PM" le rôle.
Application remplit AspNetUserRoles avec une ligne de subventions " PM "droit d'acheter, et remplit les AspNetUserClaims une revendication de TYPE" Montant d'Achat " et "<1000" valeur pour définir la limite de montant. À la question de l'achat de la commande, l'utilisateur a besoin de PM et le montant de la commande sera moins de la valeur de la déclaration de TYPE de la déclaration d'Achat du Montant".
Demande de remplir AspNetUserClaims avec la revendication de TYPE "Montant d'Achat" et "<1000" de la valeur. Tout utilisateur peut émettre ordre d'achat, compte tenu de la le montant à moins que la valeur de la déclaration de TYPE de la déclaration d'Achat du Montant " pour cet utilisateur.
Qu'elle pourrait l'être remarqué, en fonction des rôles est à grain grossier rigide droits qui permettrait de simplifier la vie de l'utilisateur de l'application du système de gestion de point de vue. cependant, il limite les capacités de l'utilisateur à partir des besoins de l'entreprise point de vue.
À l'autre côté de réclamation est très fine des droits qui doivent être attribués à chaque utilisateur. réclamation de pousser l'entreprise à la limite, toutefois, on aura un système de gestion très complexes.