2017-06-05 5 views
0

Ich bin in allen Optionen verloren, die möglich sind, um zu verwalten, was ein Benutzer tun kann und was ein Benutzer nicht tun kann. Ich begann mit Rollen: [Authorize(Roles = Constants.Roles.ModeratorAndUp)]. Wobei ModeratorAndUp die Zeichenfolge "Moderators, Administrators" ist.
Aber ich brauche einen flexibleren Ansatz. In den letzten 3 Stunden lese ich über Claims und Permissinos. Ich fand auch diesen interessanten Blog post.ASP.NET Core Permissions

Ich verwende Angular und ASP.NET Core zusammen mit Universal Vorlage. Zur Authentifizierung verwende ich OpenIddict. Ich folgte einem Buch.

Ich möchte JWT-Token für die Autorisierung und Authentifizierung verwenden. Ich weiß nicht, wie die Erlaubnis in .NET Core gehandhabt werden soll, aber ich habe 100 verschiedene Rollen und es ist komplettes Durcheinander. Und wenn ich einen neuen Benutzer erstelle, muss ich ihn manuell um 20 Rollen hinzufügen. Es wäre schön, wenn ich Gruppen mit Rollen/Berechtigungen erstellen und dann Benutzer zu dieser Gruppe hinzufügen könnte. Aber weiß nicht, wie dieses Design mit OpenIdDict und JWT-Token-Autorisierung spielen wird.

Kann mir jemand in die richtige Richtung zeigen, und dann werde ich selbst recherchieren.
Ich bin mir nicht sicher, sollte ich ein System erstellen, das Benutzerrollen automatisch aktualisiert, wenn ich Gruppenberechtigungen/Rollen ändere, sollte ich mit Ansprüchen gehen ... Ich möchte [Authorize] Attribut verwenden, weil es wirklich Dinge vereinfachen.

Was/wie/welches ist die beste Methode, um JWT Token Authentifizierung/Autorisierung in ASP.NET Core zu tun.

+1

Denken Sie über Rollen als eine Gruppe von Ansprüchen, dann werden Sie wissen, wie es zu lösen – Tseng

+1

' Aber weiß nicht, wie dieses Design mit OpenIdDict und JWT Token Authorization spielen wird.: Die Verwendung von Claims mit OpenIddict unterscheidet sich absolut nicht von der Verwendung von Claims mit der Cookies Middleware (unter der Haube hängt der Authorisation Stack nicht von Ihrer Art ab authentifizieren Ihre Benutzer, so gelten die gleichen Konzepte für Cookies und Token). Ich würde auch mit Privilegien/Berechtigungen gehen, wie von @ssmith vorgeschlagen. Wenn Sie denken, dass Sie zu viele Ansprüche in Ihren Token hinzufügen, verpassen Sie nicht https://stackoverflow.com/questions/42496306/openidconnect-access-token-size-and-accessing-claims-server-side. – Pinpoint

Antwort

1

Stellen Sie sich Ansprüche als etwas flexibler als Rollen. Das heißt, wenn Sie komplexe Geschäftsregeln haben, die nicht unbedingt einfach den Gruppen zugeordnet werden, denen der Benutzer angehört, können Sie Ihre Berechtigungen in Privilegien kapseln (Klassen, deren Aufgabe es ist, festzustellen, ob ein bestimmter Benutzer eine bestimmte Berechtigung für eine bestimmte Ressource hat). mehr Infos hier:. http://ardalis.com/favor-privileges-over-role-checks

Dieser neigt dazu, eine Menge von bedingter Komplexität in Ihrer UI-Ebene zu reduzieren, in meiner Erfahrung