1

Ich bin derzeit versucht, Rollen zu meiner Angular2 AspNetCore WebAPI Beispielanwendung hinzufügen, die hier gefunden werden kann: https://github.com/tonywr71/Snazzle LeiderAngular2 OpenIddict und Autorisieren von Rollen in AspNetCore WebAPI

, ich ist ein bisschen stecken. Ich habe die ASOS-Authentifizierung erfolgreich implementiert. Das Token wird von der Methode connect/token zurückgegeben, und ich kann meine benutzerdefinierte Methode mit dem Bearer-Token in der Kopfzeile aufrufen, und es wird erfolgreich autorisiert.

Jetzt sind zwei Probleme übrig. Einer davon ist, dass das Feld "Name" im Objekt "User.Identity" nicht festgelegt ist, obwohl es autorisiert wurde. Ich habe das verstanden, indem ich den Nutzernamen zu Claims hinzugefügt habe. Und zweitens möchte ich, dass die Rollen ausgefüllt werden, damit ich Rollen im Attribut Autorisieren verwenden kann. Ich habe Asp.Net Core Identity in der Datei Startup.cs aktiviert und die Datenbank konfiguriert. Ich würde also wirklich gerne in der Lage sein, ein Authorize-Attribut in die Webapi-Methode einzufügen und die Rollen festzulegen, die in diesem Attribut erlaubt sind.

Irgendeine Idee, wie man es bekommt, um den Namen und die Rollen zu füllen?

Antwort

2

Irgendeine Idee, wie man es bekommt, um den Namen und die Rollen zu füllen?

Um den Benutzernamen zu erhalten, müssen Sie den Standardbereich profile anfordern. Fügen Sie für die Rollen roles hinzu.

Z. B:

grant_type=password&username=johndoe&password=A3ddj3w&scope=openid%20profile%20roles 
+0

Danke, das scheint zu funktionieren. Es scheint gegen eine Art von Sicherheitsprinzipien zu verstoßen, indem es gegen Rollen autorisiert, die vom Client eingereicht wurden. Deshalb habe ich das zunächst übersehen. Gibt es einen Grund, warum sie es so machen mussten? – tone

+0

Rollen werden vom Client nicht "übergeben". Der Bereich "Rollen" ist nur dazu da, dass OpenIddict sie sowohl im Zugriffs- als auch im Identitäts-Token zurückgeben (und offen legen) kann. Da das Identitäts-Token von der Client-Anwendung gelesen werden kann (und auch das Zugriffstoken, wenn es sich um ein JWT handelt), besteht die Gefahr der Datenexposition. Deshalb wird ein zusätzlicher Bereich verwendet, um sicherzustellen, dass der Entwickler diese Tatsache kennt. – Pinpoint

+0

Ich bin hier noch ein wenig verwirrt. Wenn ich den Bereich "Rollen" nicht hinzufüge, wird die Rolle-Eigenschaft des Autorize-Attributs nicht erkannt und nichts wird erfolgreich autorisiert. Es scheint ein bisschen merkwürdig für mich, dass ich den Rollenbereich "Rollen" vom Client senden muss, um Rollen zum Autorisieren auf dem Server zu bringen. Und wenn ich den Geltungsbereich "Rollen" auf die Client-Anfrage lege, dann wird auch die Liste der Rollen an den Client gesendet. Ist das der Fall? – tone

Verwandte Themen