Ich versuche, "Role Based Authorization" mithilfe von IdentityServer4 zu implementieren, um den Zugriff auf meine API basierend auf den Benutzerrollen zu ermöglichen.
Ich möchte zum Beispiel zwei Rollen für den Benutzer haben, also FreeUser und PaidUser, und möchte mit dem Autorize-Attribut über [Authorize (Roles="FreeUser"))] auf die API zugreifen. Bitte helfen Sie mir, wie Ich erreiche das.
Ich habe die folgende Lösungsstruktur:
Ich habe meinen Javascript-Client wie folgt registriert:
%Vor%Bereiche
%Vor%Benutzer
%Vor%WebApi Startup.cs
%Vor%Web-API-Controller
%Vor%Javascript-Client app.js Hier versuche ich den Benutzer über IdentityServer anzumelden und eine API-Anfrage zu machen.
%Vor%Der Login-Ablauf funktioniert einwandfrei und ich kann mich erfolgreich anmelden, und ich kann die Rolle im Zugriffstoken erhalten.
Wenn ich eine Anfrage an die API mache, indem ich auf die Schaltfläche (Call Api) klicke, bekomme ich den folgenden Fehler ..
Da Sie kein Konfigurationsobjekt für JavaScript-Clients angegeben haben, gehe ich davon aus, dass Sie den Bereich wie folgt konfiguriert haben.
%Vor%Ich glaube, dass der Hauptgrund für Ihr Problem darin besteht, dass der Rollenanspruch nicht in Ihrem Zugriffstoken enthalten ist.
Fügen Sie dem api1-Bereich den Rollenanspruch wie folgt hinzu, um ihn in das Zugriffstoken einzubeziehen.
%Vor%Sie können meine Antwort hier lesen, um das Problem zu beheben. Implementierung von Rollen in Identity Server 4 mit ASP .net Identität
Die komplette Arbeitslösung ist da. Ссылка
Ändern Sie new Claim("role","FreeUser")
in new Claim(ClaimTypes.Role, "FreeUser")
Oder erstellen Sie eine Richtlinie wie folgt:
%Vor%und benutze es:
%Vor%Ich habe ein Beispiel für diesen Beitrag geschrieben
Identity Server 4: Hinzufügen von Ansprüchen zum Zugriffstoken
Ich habe mit Rollen und Behauptungen getestet, dass ich [Autorisieren (Role="SuperAdmin, Admin")] sowohl in der Client-Web-App als auch in der API-App verwenden kann.
Tags und Links asp.net-mvc asp.net-core identityserver4