Best Practices für Rollen im Vergleich zu Ansprüchen in ASP.NET Identity
Ich bin völlig neu auf die Verwendung von claims
im ASP.NETIdentity
und wollen, um eine Vorstellung von best practices in der Verwendung von Roles and/or Claims
.
Nachdem alle dies Lesen, ich habe noch Fragen, wie...
Q: Tun wir nicht mehr Rollen einsetzen?
Q: Wenn das so ist, warum sind die Rollen immer noch angeboten?
Q: Sollten wir verwenden nur Forderungen?
Q: Sollten wir nutzen Rollen & Ansprüche zusammen?
Mein Erster Gedanke ist, dass wir "sollten" Sie zusammen. Ich sehe Claims
als sub-Kategorien der Roles
Sie unterstützen.
ZUM BEISPIEL:
Rolle: Buchhaltung
Ansprüche: CanUpdateLedger, CanOnlyReadLedger, CanDeleteFromLedger
Q: Sie Sind beabsichtigt zu sein gegenseitig exklusiv?
Q: Oder ist es besser zu gehen, NUR die Ansprüche und "voll qualifiziert" Sie behauptet?
Q: Also, was sind die besten Methoden hier?
BEISPIEL: Mit Rollen & Ansprüche Zusammen
Natürlich, Sie würde haben schreiben Sie Ihre eigenen Attribut-Logik für diese...
[Authorize(Roles="Accounting")]
[ClaimAuthorize(Permission="CanUpdateLedger")]
public ActionResult CreateAsset(Asset entity)
{
//Do stuff here
return View();
}
BEISPIEL: Voll-Qualifying Ihre Ansprüche
[ClaimAuthorize(Permission="Accounting.Ledger.CanUpdate")]
public ActionResult CreateAsset(Asset entity)
{
//Do stuff here
return View();
}
InformationsquelleAutor der Frage Prisoner ZERO | 2015-06-21
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einer Rolle ist eine symbolische Kategorie, sammelt sich die Benutzer, die denselben Ebenen von Sicherheitsberechtigungen. Rollenbasierte Autorisierung erfordert zunächst die Identifizierung der Benutzer, dann die Feststellung der Rollen, denen der Benutzer zugeordnet ist, und schließlich vergleicht man diese Rollen, um die Rollen zu, die autorisiert sind, auf eine Ressource zuzugreifen.
Im Gegensatz dazu wird eine Forderung ist ein Recht des Nutzers, sich zu identifizieren. In anderen Worten, "ich darf das, denn ich habe diesen Anspruch.". Im Allgemeinen claims-based authorization fasst die rollenbasierte Autorisierung. Um genau zu sein, die Rolle der Mitgliedschaft bestimmt wird, basierend auf der Identität, und Identität ist dann nur eine Art von Recht auf den Wert der Forderung. Rollen sind im wesentlichen eine sehr spezielle Art des Anspruchs, D. H. "Weil mein Benutzername ist das, ich bin ein Mitglied dieser Rolle. Weil ich bin ein Mitglied dieser Rolle ist, die ich haben Zugriff auf diese resource.".
Du kann Verwendung sowohl im Konzert, oder verwenden Sie eine type in manchen Situationen, die andere in anderen Situationen. Meistens kommt es auf das zusammenspiel mit anderen Systemen und Ihre management-Strategie. Zum Beispiel, wäre es einfacher für einen manager zum verwalten einer Liste der Benutzer einer Rolle zugewiesen, als es ist, um zu verwalten, wer hat eine bestimmte Forderung abgetreten. Ansprüche können sehr nützlich sein in einer ruhigen Szenario, wo Sie zuweisen können, einen Anspruch auf einen client, und der client kann dann den Anspruch für die Genehmigung anstatt der Benutzername und das Kennwort für jede Anforderung.
InformationsquelleAutor der Antwort Claies
Als @Claies perfekt erklärt, Forderungen, könnte eine beschreibende und eine Tiefe Art von Rolle. Ich denke, über Sie, wie Sie Ihre Rollen-ids. Ich habe einen Fitness-Studio-id, also ich gehöre zu den Mitgliedern der Rolle. Ich bin auch in der Kickbox-Unterricht, so dass ich einen Anspruch für Sie; ein Kickbox-id. Meine Anwendung muss die Erklärung über eine neue Rolle zu passen, meine Mitgliedschaft Rechte. Stattdessen habe ich-ids für jede spezielle Sache, die ich tun kann in der Turnhalle; statt der vielen neuen Art der Mitgliedschaft. Das ist, warum Ansprüchen passen für mich besser.
Gibt es eine tolle Erklärung video von Barry Dorrans, sprechen über die Vorteile der Verwendung von Ansprüchen über Rollen. Er sagt auch, die Rollen sind immer noch in .NET für die Abwärtskompatibilität. Das video ist sehr informativ über die Art und Weise Ansprüche, - Rollen, - policies, - Autorisierung und-Authentifizierung.
Finden Sie es hier: ASP.NET Core-Autorisierung mit Barr Dorrans
InformationsquelleAutor der Antwort Jonathan Ramos
Die verwendet verschiedene Authentifizierungs-und Autorisierung-Techniken über Jahrzehnte, meine aktuelle MVC-Anwendung verwendet die folgende Methode.
Ansprüche sind für alle eine Zulassung. Die Benutzer zugeordnet sind, eine Rolle (mehrere Rollen möglich sind, aber brauche ich nicht) - dazu unten mehr.
Wie üblich, Eine ClaimsAuthorize Attribut class verwendet. Da die meisten controller-Aktionen CRUD, ich habe eine routine in den code-first-Datenbank-generation, die durchläuft alle controller-Aktionen und schafft Anspruchstypen, für jede controller-Aktion-Attribut Lesen/Bearbeiten/Erstellen/Löschen. E. g. aus,
Zur Verwendung bei der in einer MVC-View, einen Basis-controller-Klasse stellt view Tasche Elemente
Für website-Menüs und andere nicht-controller-Aktionen, habe ich andere Ansprüche. E. g. ob ein Benutzer einen bestimmten monetären Bereich.
So tun, wo die Rollen passen?
Ich habe eine Tabelle, in der links eine Rolle, um eine (Standard -) Satz von Ansprüchen. Bei der Einstellung Benutzer-Autorisierung, der Standardwert ist, um dem Benutzer die Ansprüche Ihrer Rolle. Jeder Benutzer kann mehr oder weniger Ansprüche als der Standard. Um die Bearbeitung einfacher, der Liste der Ansprüche ist die Karte von controller und Aktionen (in einer Reihe), mit anderen Forderungen, die dann aufgezählt werden. Die Knöpfe werden verwendet, mit ein bisschen Javascript, um wählen Sie eine Reihe von Maßnahmen zur Minimierung der "Klick" erforderlich, um wählen Sie Ansprüche. Auf Speichern, die Benutzern Forderungen werden gelöscht, und alle ausgewählten Forderungen Hinzugefügt werden. Die web-Anwendung lädt Forderungen nur einmal, also alle änderungen müssen prompt ein laden innerhalb dieser statischen Daten.
Manager können daher auswählen, welche Forderungen in jeder Rolle und die Ansprüche, die ein Benutzer hat, nachdem er Sie zu einer Rolle und diejenigen, die Standard-Ansprüche. Das system hat nur eine kleine Anzahl von Benutzern, so dass die Verwaltung dieser Daten ist unkompliziert
InformationsquelleAutor der Antwort pixelda