2016-04-06 5 views
1

Wir sind dabei, unsere Suite von Sales-Website-Verwaltungstools von einer eigenständigen zu einer Web-Schnittstelle zu migrieren. Bei unserem Design meldet sich ein Websitebetreiber über unser Hauptwebportal an und wählt dann eine unserer Unteranwendungen aus, um Dinge wie den grundlegenden Websiteinhalt, das Inventar, die Tracking-Skript-Tags usw. zu verwalten. Ich untersuche IdentityServer3, um zu sehen, ob dies der Fall ist wird als unsere SSO-Lösung funktionieren.IdentityServer3 - Erweitern von Ansprüchen/Rollen - Hinzufügen von Attributen zu Berechtigungen

Der schwierige Teil ist, dass jede Anwendung wissen muss, welche Website ein bestimmter Benutzer Berechtigungen hat, nachdem sie sich einloggen. Der Benutzer hat Administratorrechte auf den Websites 1 und 2, aber nur Berechtigung auf der Website 3 anzeigen Möglichkeit, Ansprüche zu erweitern, um zu sagen, dass ein Benutzer eine bestimmte Rolle für eine bestimmte Website hat? Auch nur das Hinzufügen eines "id" -Attributs zu einer Rolle/Claim wäre gut genug. Es ist nicht möglich, für jede Website separate Rollen zu erstellen (wir starten mit ein paar hundert), es sei denn, es gibt keine Möglichkeit, sie alle einzeln in den Clients zu autorisieren. Vielleicht gibt es eine Möglichkeit, die Rollennamen zu strukturieren und einen benutzerdefinierten ResourceAuthorizationManager zu verwenden, um die benötigten Informationen zu analysieren. Außerdem müssten wir in der Lage sein, diese Informationen mit den anderen Identitätsinformationen um die Unteranwendungen herum zu übermitteln, aber als Teil der spezifischen Rollen, die der Benutzer in seinen Ansprüchen hat, sodass die Clients Zugriff auf die Websites haben, für die ein Benutzer Berechtigungen hat zum.

Antwort

0

IdentityServer - wie der Name schon sagt - handelt von Identität - keine Berechtigungen.

Die Aufgabe von Identityserver besteht darin, einer oder mehreren Anwendungen eine stabile und konsistente Identität zur Verfügung zu stellen.

Alle anwendungsspezifischen (wie Berechtigungen) sollten in der Anwendung selbst behandelt werden.

Sie könnten z.B. Erstellen Sie einen separaten Berechtigungsservice (gesichert durch identityserver), mit dem Ihre Anwendungen die Berechtigung des Benutzers im Kontext der Anwendung abrufen und diese in die Berechtigungslogik einspeisen können.

+0

Aber IdentityServer kennt Rollen. Wollen Sie sagen, dass diese Rollen und ihre Verwendung mit dem Autorize-Attribut nicht mit dem übereinstimmen, für das IdentityServer entworfen wurde? –

+0

Ich bin auf der Suche nach einer Möglichkeit, die Identity-Payload zu erweitern, die zwischen den IDsrv und den Clients weitergegeben wird, damit sie die gewünschten Informationen enthält. –

+0

Sie haben die volle Kontrolle darüber, welche Ansprüche in welches Token gelangen - dafür gibt es Bereiche. Die Dokumentation enthält alle Details. Mein allgemeiner Rat steht immer noch. – leastprivilege