Ich benutze IdentityServer3 als Autorisierungsserver in meiner Architektur.Ansprüche in JWT vs Ansprüche Transformation in Ressource
Ich habe eine API-Ressource, die ich meinen Kunden (Web-App und iOS-App) über einen Ressourcenbereich gewähren kann.
Frage 1: Wenn ich will forderungsbasierte Autorisierung in meiner API (CanViewQuestions
zB eine Forderung genannt, dass nur einige Benutzer) zu tun, sollte ich:
a) Verwendung IdentityServer, zB bei Authentifizieren Sie, ob der Benutzer diesen Anspruch hat und fügen Sie ihn dem JWT
hinzu. b) Geben Sie einfach den Betreff (z. B. userId) in das JWT ein, suchen Sie in der API nach und führen Sie eine Schadentransformation durch.
Ich mache derzeit b), aber wundernd, ob dies vom Autorisierungsserver (z. B. IdSrv) selbst durchgeführt werden sollte?
Was ist der empfohlene Ansatz?
Frage 2
Wenn ich einen Hintergrunddienst (Azure Worker speziell) haben, die ich möchte auch den Zugriff auf meine API-Ressource geben, kann ich Client-Anmeldeinformationen verwenden fließen diesen Service ein Zugriffstoken zu geben. Aber wie kann ich diesem Service den gleichen Anspruch geben (CanViewQuestions
)? Ich möchte grundsätzlich meine API haben, um sicherzustellen, dass eine bestimmte Ressource den Anspruch CanViewQuestions
erfordert, aber es ist mir egal, ob es sich bei dem Client um die Webanwendung (z. B. Endbenutzer) oder den Client (kein Endbenutzer) handelt. Wenn der Antragsteller den Anspruch hat, gut zu gehen.
soll ich haben:
a) Verwenden Sie forderungsbasierte Transformation zu sehen, ob der Kunde die Dienstleistung ist, dann fügen Sie einfach die alle Ansprüche?
b) einbetten die Ansprüche im JWT (obwohl ich Client-Rechten Ansprüche nicht unterstützen fließen gelesen haben)
c) Etwas anderes?
Vielen Dank!