Häufige Anwendungsfälle (Common use cases)
In diesem Abschnitt geben wir einige Beispiele, um dir Szenarien zu zeigen, in denen benutzerdefinierte Token-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 Token-Ansprüche dir Vorteile bringen können.
Attributbasierte Zugangskontrolle (ABAC) ermöglichen
Attributbasierte Zugangskontrolle (ABAC) ist ein Zugriffssteuerungsmodell, das Attribute (wie Benutzerrollen, Ressourceneigenschaften und Umweltbedingungen) verwendet, um Zugriffsentscheidungen zu treffen. Es ist eine flexible und dynamische Methode, um den Zugriff auf geschützte 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 die Nutzung der kostenpflichtigen Funktionen zu steuern. Um einfach zu prüfen, ob ein Benutzer die App bereits während der öffentlichen Beta-Phase genutzt hat, kannst du die Methode getCustomJwtClaims()
verwenden, um einen Anspruch createdAt
im Token-Payload hinzuzufügen.
Wenn du dann die 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 Zugriff auf kostenpflichtige Ressourcen besitzen.
- Das Feld
createdAt
ist früher als das Ende 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, angenommen, deine App zeigt Geburtstagswünsche auf der Anmeldeseite an, wenn der Geburtstag des Benutzers bevorsteht. Du kannst benutzerdefinierte Token-Ansprüche verwenden, um ein Geburtstagsfeld zum Token-Payload hinzuzufügen, das verwendet werden kann, um zu bestimmen, ob eine bestimmte Nachricht angezeigt werden soll.
Token-Ausstellung 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 die Spielzeit abläuft. Joe möchte die Spieler zum Ausloggen zwingen, wenn ihr Kontostand aufgebraucht ist, um sie zum Aufladen zu motivieren.
An dieser Stelle kann Joe ebenfalls die Funktion für benutzerdefinierte Token-Ansprüche von Logto nutzen, um dies zu erreichen:
- 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-Ausstellung zu blockieren.
Da in diesem Fall kein neues gültiges Zugangstoken mehr erhalten werden kann, wird der Spieler zwangsweise aus dem Spiel ausgeloggt.