Zum Hauptinhalt springen

Platform-SDK-Konvention

Platform SDK bietet eine standardisierte Möglichkeit, den Client mit dem Logto-Dienst auf der spezifischen Plattform zu integrieren und beschleunigt den Integrationsprozess.

  • Platform SDK kapselt den Kern mit plattformspezifischer Implementierung.
  • Platform SDK sollte grundlegende Typen bereitstellen, die die Verwendung des SDKs erleichtern.
  • Platform SDK sollte als Klasse mit dem Namen LogtoClient exportiert werden.

Grundlegende Typen

LogtoConfig
NameTypErforderlichStandardwertAnmerkungen
endpointstringDer OIDC-Dienstendpunkt.
appIdstringDie Anwendungs-ID stammt von der Anwendung, die wir im Logto-Dienst registriert haben.
scopesstring[][openid, offline_access, profile]Dieses Feld enthält immer openid, offline_access und profile.
resourcesstring[]Die geschützten Ressourcenindikatoren, die wir verwenden möchten.
promptstringconsentDer Prompt-Wert, der in generateSignInUri verwendet wird.
usingPersistStoragebooleantrueEntscheidet, ob Anmeldeinformationen auf dem lokalen Rechner gespeichert werden sollen oder nicht.

*Anmerkungen

  • Du kannst dieses LogtoConfig erweitern, wenn du es benötigst.
  • usingPersistStorage wird nur in Client-SDKs bereitgestellt. Z.B. iOS, Android und SPA.
AccessToken
NameTypAnmerkungen
tokenstring
scopestring
expiresAtnumberZeitstempel in Sekunden

LogtoClient

Eigenschaften

logtoConfig

Typ

LogtoConfig

oidcConfig

Typ

OidcConfigResponse?

accessTokenMap

Typ

Map<string, AccessToken>

Schlüssel

  • Der Schlüssel sollte mit scope und resource konstruiert werden.
  • Die Werte in scope sollten alphabetisch sortiert und mit Leerzeichen verbunden werden.
  • Der Schlüssel sollte im Muster: ${scope}@${resource} konstruiert werden.
  • Wenn scope oder resource null oder leer sind, sollten ihre Werte als leer behandelt werden.

Z.B., "offline_access openid read:usr@https://logto.dev/api", "@https://logto.dev/api", "openid@", "@".

Wert

  • AccessToken, das die expiresAt-Eigenschaft verwendet, um die genaue Zeit anzugeben, wann ein Zugangstoken abläuft.

Anmerkungen

  • Der scope wird immer ein Nullwert sein, da wir in Logto V1 keine benutzerdefinierten Berechtigungen unterstützen.
  • Beim Erstellen des Zugangstoken-Schlüssels zur Speicherung eines Zugangstokens:
    • scope wird immer ein Nullwert sein.
    • Wenn das Zugangstoken kein JWT ist, behandle das resource als Nullwert.
    • Wenn das Zugangstoken ein JWT ist, dekodiere das Zugangstoken und verwende den aud-Anspruchswert der Nutzlast als resource-Teil des Zugangstoken-Schlüssels.
refreshToken

Typ

string?

Anmerkungen

refreshToken wird unter den folgenden Umständen gesetzt oder aktualisiert:

  • Lade refreshToken aus dem Speicher.
  • Der Server gibt ein refreshToken in der Antwort zurück, wenn das Token erfolgreich abgerufen wurde.
  • Abmelden (wird auf null gesetzt).
idToken

Typ

string?

Anmerkungen

  • idToken sollte überprüft werden, wenn es vom Backend stammt.
  • idToken wird unter den folgenden Umständen gesetzt oder aktualisiert:
    • Lade idToken aus dem Speicher.
    • Der Server gibt ein idToken in der Antwort zurück, wenn das Token erfolgreich abgerufen wurde.
    • Abmelden (wird auf null gesetzt).

Methoden

Konstruktor

Parameter

ParameterTyp
logtoConfigLogtoConfig

Rückgabetyp

LogtoClient

Anmerkungen

  • Du kannst zusätzliche Parameter hinzufügen, wenn du es benötigst.
  • Wenn die Verwendung von Persistenzspeicher in logtoConfig aktiviert ist, bietet das Platform SDK die folgenden Funktionen:
    • Speichere persistente Daten mit einem eindeutigen Schlüssel basierend auf clientId.
    • Lade refreshToken und idToken beim Initialisieren vom lokalen Rechner.
    • Speichere refreshToken und idToken lokal bei Core.fetchTokenByAuthorizationCode und Core.fetchTokenByRefreshToken.
isAuthenticated

Um zu wissen, ob ein Benutzer authentifiziert ist oder nicht.
Dies kann auch als Getter definiert werden.

Ein Benutzer wird als authentifiziert behandelt, wenn:

  • Wir erfolgreich ein ID-Token erhalten haben.
  • Wir ein ID-Token vom lokalen Rechner geladen haben.

Parameter

Keine.

Rückgabetyp

boolean

SignIn

Diese Methode sollte einen Anmeldevorgang starten und das Platform SDK sollte alle Schritte, die eine Autorisierung benötigt, um den Anmeldeumleitungsprozess abzuschließen, übernehmen.

Der Benutzer wird authentifiziert, nachdem diese Methode erfolgreich aufgerufen wurde.

Der Anmeldeprozess wird auf die Core-SDK-Funktionen zurückgreifen:

  • generateSignInUri
  • verifyAndParseCodeFromCallbackUri
  • fetchTokenByAuthorizationCode

Anmerkungen:

  • Da generateSignInUri die benötigten Ressourcen enthält, müssen wir die Ressource nicht an die fetchTokenByAuthorizationCode-Funktion übergeben.

Parameter

ParameterTyp
redirectUristring

Rückgabetyp

void

Ausnahmen

  • Jeder Fehler, der während dieses Anmeldeprozesses auftritt.
SignOut

Der Abmeldeprozess sollte die folgenden Schritte befolgen:

  1. Lösche lokalen Speicher, Cookies, persistente Daten oder etwas anderes.
  2. Widerrufe das erhaltene Auffrischungstoken über Core.revoke (der Logto-Dienst wird alle zugehörigen Tokens widerrufen, wenn das Auffrischungstoken widerrufen wird).
  3. Leite den Benutzer zur Abmelde-URL von Logto weiter, es sei denn, Schritt 1 löscht die Sitzung der Anmeldeseite.

Anmerkungen:

  • In Schritt 2 ist Core.revoke ein asynchroner Aufruf und wird den Abmeldeprozess nicht blockieren, selbst wenn er fehlschlägt.
  • Schritt 3 basiert auf Core.generateSignOutUri, um die Abmelde-URL von Logto zu generieren.

Parameter

ParameterTypErforderlichStandardwert
postLogoutRedirectUristringnull

Rückgabetyp

void

Ausnahmen

  • Jeder Fehler, der während dieses Abmeldeprozesses auftritt.
getAccessToken

getAccessToken ruft ein AccessToken durch resource und scope aus accessTokenMap ab und gibt den token-Wert dieses AccessToken zurück.

Wir setzen den scope auf null, wenn wir den Schlüssel der accessTokenMap erstellen, da wir in Logto V1 keine benutzerdefinierten Berechtigungen unterstützen.

Anmerkungen

  • Wenn kein entsprechendes AccessToken gefunden werden kann, führe eine Core.fetchTokenByRefreshToken-Aktion aus, um das benötigte Token abzurufen.
  • Wenn das accessToken nicht abgelaufen ist, gib den token-Wert darin zurück.
  • Wenn das accessToken abgelaufen ist, führe eine Core.fetchTokenByRefreshToken-Aktion aus, um ein neues accessToken abzurufen, aktualisiere die lokale accessTokenMap und gib den neuen token-Wert darin zurück.
  • Wenn Core.fetchTokenByRefreshToken fehlschlägt, informiere den Benutzer über die aufgetretene Ausnahme.
  • Wenn das Auffrischungstoken nicht gefunden werden kann, informiere den Benutzer über eine nicht autorisierte Ausnahme.
  • Nur durch das Erhalten eines refreshToken nach der Anmeldung können wir eine Core.fetchTokenByRefreshToken-Aktion ausführen.

Parameter

ParameterTypErforderlichStandardwert
resourcestringnull

Rückgabetyp

string

Ausnahmen

  • Der Benutzer ist nicht authentifiziert.
  • Die Eingabe resource ist nicht im logtoConfig gesetzt.
  • Kein Auffrischungstoken gefunden vor Core.fetchTokenByRefreshToken.
  • Core.fetchTokenByRefreshToken ist fehlgeschlagen.
getIdTokenClaims

getIdTokenClaims gibt ein Objekt zurück, das die Ansprüche der idToken-Eigenschaft trägt.

Parameter

Keine.

Rückgabetyp

IdTokenClaims

Ausnahmen

  • Der Benutzer ist nicht authentifiziert.