Häufige Anwendungsfälle
In diesem Abschnitt werden wir einige Beispiele bereitstellen, um dir zu helfen, einige Szenarien zu verstehen, in denen benutzerdefinierte Token-Ansprüche nützlich sein können, und dir einige Referenzen bieten. Auf diese Weise kannst du, wenn du auf Schwierigkeiten im Zugangsmanagement stößt, beurteilen, ob benutzerdefinierte Token-Ansprüche dir Bequemlichkeit bringen können.
Attributbasierte Zugangskontrolle (ABAC) ermöglichen
Attributbasierte Zugangskontrolle (ABAC) ist ein Zugangssteuerungsmodell, das Attribute (wie Benutzerrollen, Ressourceneigenschaften und Umweltbedingungen) verwendet, um Zugangsentscheidungen zu treffen. Es ist eine flexible und dynamische Möglichkeit, den Zugang zu geschützten Ressourcen zu verwalten.
Angenommen, du baust eine App, und die Veröffentlichung der App ist in zwei Phasen unterteilt: öffentliche Beta und offizieller Start. Selbst 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 überprü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.
Dann, bei der Zugangskontrolle in deinen geschützten APIs, musst du Zugangstokens zulassen, die eine der folgenden Bedingungen erfüllen:
- Mit dem RBAC-Kontext, der die Berechtigung für den Zugang zu kostenpflichtigen Ressourcen hat.
- Das
createdAt
ist früher als das Enddatum der öffentlichen Beta-Phase.
Ohne die Funktion für benutzerdefinierte Token-Ansprüche wäre es bei der Überprüfung von Berechtigungen für geschützte API-Ressourcen notwendig, die Logto Management API aufzurufen, um zu überprüfen, ob der Benutzer mit dem aktuellen Zugangstoken die Berechtigungen hat, die der Rolle entsprechen, die von einer bestimmten API-Ressource benötigt wird.
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 Geburtsdatum-Feld zum Token-Payload hinzuzufügen, das verwendet werden kann, um zu bestimmen, ob eine bestimmte Nachricht angezeigt werden soll.
Manuelles Blockieren der Token-Ausgabe
Angenommen, Joe betreibt ein Online-Spiel und verwendet Logto als Identity and Access Management (IAM) System.
Angenommen, dieses Spiel erfordert Aufladungen, um Spielzeit zu kaufen. Joe zeichnet das Guthaben jedes Benutzers in seinem Spielservice auf und zieht kontinuierlich vom Guthaben ab, während sich die Spielzeit ansammelt. Joe möchte, dass Spieler gezwungen werden, sich abzumelden, wenn ihr Kontostand erschöpft ist, um sie zum Aufladen zu ermutigen.
An diesem Punkt kann Joe auch die von Logto bereitgestellte Funktion für benutzerdefinierte Token-Ansprüche verwenden, 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-Ausgabe zu blockieren.
Zu diesem Zeitpunkt, da kein neues gültiges Zugangstoken erhalten werden kann, wird der Spieler gezwungen, sich aus dem Spiel abzumelden.