Häufige Anwendungsfälle (Common use cases)
In diesem Abschnitt geben wir einige Beispiele, um dir Szenarien zu zeigen, in denen benutzerdefinierte Zugangstoken-Ansprüche nützlich sein können, und bieten dir einige Referenzen. So kannst du, wenn du auf Schwierigkeiten im Zugriffsmanagement stößt, prüfen, ob benutzerdefinierte Zugangstoken-Ansprüche dir Vorteile bringen können.
Attributbasierte Zugangskontrolle (ABAC) ermöglichen
Attributbasierte Zugangskontrolle (ABAC) ist ein Zugangskontrollmodell, das Attribute (wie Benutzerrollen, Ressourceneigenschaften und Umweltbedingungen) verwendet, um Zugriffsentscheidungen zu treffen. Es ist eine flexible und dynamische Methode, um den Zugang zu geschützten Ressourcen zu verwalten.
Angenommen, du entwickelst eine App, und die Veröffentlichung der App ist in zwei Phasen unterteilt: öffentliche Beta und offizieller Start. Auch nach dem offiziellen Start der App möchtest du, dass alte Benutzer, die an der öffentlichen Beta teilgenommen haben, weiterhin die kostenpflichtigen Funktionen nutzen können.
Nach dem offiziellen Start der App verwendest du die rollenbasierte Zugangskontrolle (RBAC) von Logto, um den Zugang zu den kostenpflichtigen Funktionen zu steuern. Um einfach zu prüfen, ob ein Benutzer die App bereits während der öffentlichen Beta genutzt hat, kannst du die Methode getCustomJwtClaims() verwenden, um einen Anspruch createdAt im Token-Payload hinzuzufügen.
Wenn du dann Zugangskontrolle in deinen geschützten APIs durchführst, musst du Zugangstokens zulassen, die eine der folgenden Bedingungen erfüllen:
- Im RBAC-Kontext die Berechtigung für den Zugang zu kostenpflichtigen Ressourcen besitzen.
- Das Feld
createdAtist früher als das Enddatum der öffentlichen Beta-Phase.
Ohne die Funktion für benutzerdefinierte Token-Ansprüche müsste beim Überprüfen der Berechtigungen für die Autorisierung (Authorization) die Logto Management API aufgerufen werden, um zu prüfen, ob der Benutzer mit dem aktuellen Zugangstoken die Berechtigungen für die von einer bestimmten API-Ressource geforderte Rolle besitzt.
In einem ähnlichen Szenario kannst du beispielsweise auf der Login-Seite Geburtstagsgrüße anzeigen, wenn der Geburtstag des Benutzers bevorsteht. Du kannst benutzerdefinierte Token-Ansprüche nutzen, um ein Geburtstagsfeld zum Token-Payload hinzuzufügen, das verwendet werden kann, um zu bestimmen, ob eine bestimmte Nachricht angezeigt werden soll.
Token-Ausgabe manuell blockieren
Angenommen, Joe betreibt ein Online-Spiel und verwendet Logto als Identity and Access Management (IAM)-System.
Nehmen wir an, dieses Spiel erfordert Aufladungen, um Spielzeit zu kaufen. Joe speichert das Guthaben jedes Benutzers in seinem Spielservice und zieht kontinuierlich vom Guthaben ab, während Spielzeit verbraucht wird. Joe möchte Spieler zum Aufladen animieren, indem er sie zwingt, sich abzumelden, wenn ihr Kontostand aufgebraucht ist.
An dieser Stelle kann Joe ebenfalls die Funktion für benutzerdefinierte Token-Ansprüche von Logto nutzen:
- Im Skript kann ein externer API-Aufruf externe Daten abrufen verwendet werden, um das aktuelle Guthaben des Spielers von Joes Spielserver abzurufen.
- Wenn das Guthaben kleiner oder gleich 0 ist, kann die Methode
api.denyAccess()verwendet werden, um die Token-Ausgabe zu blockieren.
Da in diesem Fall kein neues gültiges Zugangstoken mehr erhalten werden kann, wird der Spieler gezwungen, sich vom Spiel abzumelden.