Zum Hauptinhalt springen

Core SDK-Konvention

Grundlegende Konventionen

  • Der Kern sollte nur plattformunabhängige Funktionen enthalten.
  • Der Kern sollte als {$language} benannt und im Stammverzeichnis des Repositories abgelegt werden. Z.B. logto/js/js, logto/kotlin/kotlin.
  • Das Kernpaket sollte unter dem Logto-Scope als {$language} benannt werden. Z.B. @logto/js, io.logto.sdk:kotlin.

Grundlegende Anforderungen

Jedes Core SDK sollte enthalten:

  • Typen
  • Hilfsfunktionen
  • Kernfunktionen

Typen

OidcConfigResponse

Die Konfiguration des Identitätsanbieters, die über die /oidc/.well-known/openid-configuration API abgerufen werden kann.

Eigenschaften

NameTyp
authorizationEndpointstring
tokenEndpointstring
endSessionEndpointstring
revocationEndpointstring
jwksUristring
issuerstring
CodeTokenResponse

Die Antwortdaten von /oidc/token (durch Autorisierungscode).

Eigenschaften

NameTypErforderlich
accessTokenstring
refreshTokenstring
idTokenstring
scopestring
expiresInnumber
RefreshTokenResponse

Die Antwortdaten von /oidc/token (durch Auffrischungstoken), wenn Tokens durch ein Auffrischungstoken aktualisiert werden.

Eigenschaften

NameTypErforderlich
accessTokenstring
refreshTokenstring
idTokenstring
scopestring
expiresInnumber
IdTokenClaims

Ansprüche, die vom ID-Token getragen werden.

Eigenschaften

NameTypErforderlich
substring
audstring
expnumber
iatnumber
issstring
atHashstring
usernamestring
namestring
avatarstring

Hilfsfunktionen

generateCodeVerifier

Generiere einen Code-Verifier.
Die Länge des Code-Verifiers ist fest auf 64 eingestellt.
Der Rückgabewert MUSS in einen URL-sicheren Base64-Format-String verschlüsselt werden.

Referenz

Parameter

Keine.

Rückgabetyp

string

generateCodeChallenge

Generiere eine Code-Challenge basierend auf einem Code-Verifier.
Diese Methode verschlüsselt den Code-Verifier und gibt das Ergebnis in einem URL-sicheren Base64-Format zurück.
Wir haben den Verschlüsselungsalgorithmus in Logto V1 fest auf SHA-256 eingestellt.

Referenz

Parameter

NameTypAnmerkungen
codeVerifierstringGeneriert durch generateCodeVerifier

Rückgabetyp

string

generateState

"State" wird verwendet, um CSRF-Angriffe zu verhindern.
Die Länge des "State" ist fest auf 64 eingestellt.
Der zurückzugebende Ergebnisstring MUSS in einen URL-sicheren Base64-Format-String verschlüsselt werden.

Referenz

Parameter

Keine.

Rückgabetyp

string

decodeIdToken

Dekodiere ein ID-Token ohne geheime Überprüfung.
Gibt ein IdTokenClaims zurück, das alle Token-Ansprüche im Payload-Abschnitt enthält.

Parameter

NameTyp
tokenstring

Rückgabetyp

IdTokenClaims

Ausnahmen

  • Das token ist kein gültiges JWT.
verifyIdToken

Überprüfe, ob ein ID-Token legal ist.

Überprüfung des Signaturschlüssels

OIDC unterstützt das JSON Web Key Set. Diese Funktion akzeptiert ein JsonWebKeySet-Objekt aus einer Drittanbieterbibliothek (jose) zur Überprüfung.

// JsonWebKeySet Beispiel
{
"keys": [
{
"kty": "RSA",
"use": "sig",
"kid": "xxxx",
"e": "xxxx",
"n": "xxxx"
}
]
}

Überprüfung der Ansprüche

  • Überprüfe, ob der iss im ID-Token mit dem Aussteller dieses Tokens übereinstimmt.
  • Überprüfe, ob der aud (Zielgruppe) Anspruch gleich der Client-ID ist.
  • Überprüfe, ob die aktuelle Zeit vor der Ablaufzeit liegt.
  • Überprüfe, ob die Ausstellungszeit (iat) nicht mehr als +/- 1 Minute von der aktuellen Zeit abweicht.

Referenz

Parameter

NameTyp
idTokenstring
clientIdstring
issuerstring
jwksJsonWebKeySet

Rückgabetyp

void

Ausnahmen

  • Überprüfung des Signaturschlüssels fehlgeschlagen
  • Überprüfung der Ansprüche fehlgeschlagen
verifyAndParseCodeFromCallbackUri

Überprüfe, ob die Anmelde-Callback-URI legal ist, und gib den code zurück, der aus der Callback-URI extrahiert wurde.

Überprüfung der Callback-URI

  • Überprüfe, ob die callbackUri mit redirectUri beginnt
  • Überprüfe, ob kein error in der callbackUri vorhanden ist (siehe Fehlerantwort in der Redirect-URI).
  • Überprüfe, ob die callbackUri state enthält, das dem state-Wert entsprechen sollte, den du in generateSignInUri angegeben hast.
  • Überprüfe, ob die callbackUri den Parameterwert code enthält, den du bei der Anforderung an /oidc/token (durch Auffrischungstoken) verwenden wirst.

Parameter

NameTyp
callbackUristring
redirectUristring
statestring

Rückgabetyp

string

Ausnahmen

  • Überprüfungen fehlgeschlagen

Kernfunktionen

fetchOidcConfig

Gibt OidcConfigResponse zurück, indem eine Anfrage an /oidc/.well-known/openid-configuration gestellt wird.

Parameter

NameTypAnmerkungen
endpointstringDer OIDC-Service-Endpunkt

Rückgabetyp

OidcConfigResponse

Ausnahmen

  • Abruf fehlgeschlagen
generateSignInUri

Parameter

NameTypErforderlichAnmerkungen
authorizationEndpointstring
clientIdstring
redirectUristring
codeChallengestring
statestring
scopesstring[]Die Implementierung kann je nach Sprachspezifikationen variieren.
resourcesstring[]Die Implementierung kann je nach Sprachspezifikationen variieren.
promptstringStandard: consent.

Die URL wird basierend auf authorizationEndpoint generiert und enthält die folgenden Abfrageparameter:

Anmelde-URL-Abfrageparameter

Abfrage-SchlüsselErforderlichAnmerkungen
client_id
redirect_uri
code_challenge
code_challenge_methodFest auf S256 eingestellt.
state
scopescope enthält immer openid und offline_access, auch wenn der Eingabebereich einen null oder leeren Bereichswert liefert.
resourceWir können resource mehrmals zur URI hinzufügen, der Backend wird sie als Liste konvertieren. z.B. resource=a&resource=b
response_typeFest auf code eingestellt.
prompt

Rückgabetyp

string

generateSignOutUri

Parameter

NameTypErforderlich
endSessionEndpointstring
idTokenstring
postLogoutRedirectUristring

Die zu generierende URL basiert auf endSessionEndpoint und enthält die folgenden Abfrageparameter:

Abmelde-URL-Abfrageparameter

Abfrage-SchlüsselErforderlichAnmerkungen
id_token_hintder eingegebene idToken-Parameter
post_logout_redirect_urider eingegebene postLogoutRedirectUri-Parameter

Rückgabetyp

string

fetchTokenByAuthorizationCode

Hole ein Token (CodeTokenResponse), indem eine Anfrage an /oidc/token (durch Autorisierungscode) gestellt wird.

Parameter

NameTypErforderlich
tokenEndpointstring
codestring
codeVerifierstring
clientIdstring
redirectUristring
resourcestring

HTTP-Anfrage

  • Endpunkt: /oidc/token
  • Methode: POST
  • Content-Type: application/x-www-form-urlencoded
  • Nutzlast:
Abfrage-SchlüsselTypErforderlich
grant_typestring: 'authorization_code'
codestring
code_verifierstring
client_idstring
redirect_uristring
resourcestring

Rückgabetyp

CodeTokenResponse

Ausnahmen

  • Abruf fehlgeschlagen
fetchTokenByRefreshToken

Hole ein Token (RefreshTokenTokenResponse) über /oidc/token (durch Auffrischungstoken).

Parameter

NameTypErforderlich
tokenEndpointstring
clientIdstring
refreshTokenstring
resourcestring
scopesstring[]

HTTP-Anfrage

  • Endpunkt: /oidc/token
  • Methode: POST
  • Content-Type: application/x-www-form-urlencoded
  • Nutzlast:
Abfrage-SchlüsselTypErforderlichAnmerkungen
grant_typestring: 'refresh_token'
refresh_tokenstring
client_idstring
resourcestring
scopestringwir verbinden die scopes-Werte mit Leerzeichen, um diesen scope-String zu konstruieren

Rückgabetyp

RefreshTokenTokenResponse

Ausnahmen

  • Abruf fehlgeschlagen
revoke

Anfrage an die /oidc/token/revocation API, um den Autorisierungsserver darüber zu informieren, dass ein zuvor erhaltenes Auffrischungs- oder Zugangstoken nicht mehr benötigt wird.

Parameter

NameTypAnmerkungen
revocationEndpointstring
clientIdstring
tokenstringzu widerrufendes Token

HTTP-Anfrage

  • Endpunkt: /oidc/token/revocation
  • Methode: POST
  • Content-Type: application/x-www-form-urlencoded
  • Nutzlast:
Abfrage-SchlüsselTyp
client_idstring
tokenstring

Rückgabetyp

void

Ausnahmen

  • Widerruf fehlgeschlagen