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
LogtoClientexportiert werden.
Grundlegende Typen
LogtoConfig
| Name | Typ | Erforderlich | Standardwert | Anmerkungen |
|---|---|---|---|---|
| endpoint | string | ✅ | Der OIDC-Dienstendpunkt. | |
| appId | string | ✅ | Die Anwendungs-ID stammt von der Anwendung, die wir im Logto-Dienst registriert haben. | |
| scopes | string[] | [openid, offline_access, profile] | Dieses Feld enthält immer openid, offline_access und profile. | |
| resources | string[] | Die geschützten Ressourcenindikatoren, die wir verwenden möchten. | ||
| prompt | string | consent | Der Prompt-Wert, der in generateSignInUri verwendet wird. | |
| usingPersistStorage | boolean | true | Entscheidet, ob Anmeldeinformationen auf dem lokalen Rechner gespeichert werden sollen oder nicht. |
*Anmerkungen
- Du kannst dieses
LogtoConfigerweitern, wenn du es benötigst. usingPersistStoragewird nur in Client-SDKs bereitgestellt. Z.B. iOS, Android und SPA.
AccessToken
| Name | Typ | Anmerkungen |
|---|---|---|
| token | string | |
| scope | string | |
| expiresAt | number | Zeitstempel in Sekunden |
LogtoClient
Eigenschaften
logtoConfig
Typ
LogtoConfig
oidcConfig
Typ
OidcConfigResponse?
accessTokenMap
Typ
Map<string, AccessToken>
Schlüssel
- Der Schlüssel sollte mit
scopeundresourcekonstruiert werden. - Die Werte in
scopesollten alphabetisch sortiert und mit Leerzeichen verbunden werden. - Der Schlüssel sollte im Muster:
${scope}@${resource}konstruiert werden. - Wenn
scopeoderresourcenull 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 dieexpiresAt-Eigenschaft verwendet, um die genaue Zeit anzugeben, wann ein Zugangstoken abläuft.
Anmerkungen
- Der
scopewird immer ein Nullwert sein, da wir in Logto V1 keine benutzerdefinierten Berechtigungen unterstützen. - Beim Erstellen des Zugangstoken-Schlüssels zur Speicherung eines Zugangstokens:
scopewird immer ein Nullwert sein.- Wenn das Zugangstoken kein JWT ist, behandle das
resourceals Nullwert. - Wenn das Zugangstoken ein JWT ist, dekodiere das Zugangstoken und verwende den
aud-Anspruchswert der Nutzlast alsresource-Teil des Zugangstoken-Schlüssels.
refreshToken
Typ
string?
Anmerkungen
refreshToken wird unter den folgenden Umständen gesetzt oder aktualisiert:
- Lade
refreshTokenaus dem Speicher. - Der Server gibt ein
refreshTokenin der Antwort zurück, wenn das Token erfolgreich abgerufen wurde. - Abmelden (wird auf
nullgesetzt).
idToken
Typ
string?
Anmerkungen
idTokensollte überprüft werden, wenn es vom Backend stammt.idTokenwird unter den folgenden Umständen gesetzt oder aktualisiert:- Lade
idTokenaus dem Speicher. - Der Server gibt ein
idTokenin der Antwort zurück, wenn das Token erfolgreich abgerufen wurde. - Abmelden (wird auf
nullgesetzt).
- Lade
Methoden
Konstruktor
Parameter
| Parameter | Typ |
|---|---|
| logtoConfig | LogtoConfig |
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
refreshTokenundidTokenbeim Initialisieren vom lokalen Rechner. - Speichere
refreshTokenundidTokenlokal beiCore.fetchTokenByAuthorizationCodeundCore.fetchTokenByRefreshToken.
- Speichere persistente Daten mit einem eindeutigen Schlüssel basierend auf
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:
generateSignInUriverifyAndParseCodeFromCallbackUrifetchTokenByAuthorizationCode
Anmerkungen:
- Da generateSignInUri die benötigten Ressourcen enthält, müssen wir die Ressource nicht an die fetchTokenByAuthorizationCode-Funktion übergeben.
Parameter
| Parameter | Typ |
|---|---|
| redirectUri | string |
Rückgabetyp
void
Ausnahmen
- Jeder Fehler, der während dieses Anmeldeprozesses auftritt.
SignOut
Der Abmeldeprozess sollte die folgenden Schritte befolgen:
- Lösche lokalen Speicher, Cookies, persistente Daten oder etwas anderes.
- Widerrufe das erhaltene Auffrischungstoken über
Core.revoke(der Logto-Dienst wird alle zugehörigen Tokens widerrufen, wenn das Auffrischungstoken widerrufen wird). - 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.revokeein 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
| Parameter | Typ | Erforderlich | Standardwert |
|---|---|---|---|
| postLogoutRedirectUri | string | null |
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
AccessTokengefunden werden kann, führe eineCore.fetchTokenByRefreshToken-Aktion aus, um das benötigte Token abzurufen. - Wenn das
accessTokennicht abgelaufen ist, gib dentoken-Wert darin zurück. - Wenn das
accessTokenabgelaufen ist, führe eineCore.fetchTokenByRefreshToken-Aktion aus, um ein neuesaccessTokenabzurufen, aktualisiere die lokaleaccessTokenMapund gib den neuentoken-Wert darin zurück. - Wenn
Core.fetchTokenByRefreshTokenfehlschlä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
refreshTokennach der Anmeldung können wir eineCore.fetchTokenByRefreshToken-Aktion ausführen.
Parameter
| Parameter | Typ | Erforderlich | Standardwert |
|---|---|---|---|
| resource | string | null |
Rückgabetyp
string
Ausnahmen
- Der Benutzer ist nicht authentifiziert.
- Die Eingabe
resourceist nicht imlogtoConfiggesetzt. - Kein Auffrischungstoken gefunden vor
Core.fetchTokenByRefreshToken. Core.fetchTokenByRefreshTokenist 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.