Aller au contenu principal

Convention du SDK Core

Conventions de base

  • Le core ne doit contenir que des fonctions indépendantes de la plateforme.
  • Le core doit être nommé {$language} et placé sous le répertoire racine du dépôt. Par exemple, logto/js/js, logto/kotlin/kotlin.
  • Le package core doit être nommé {$language} sous la portée de Logto. Par exemple, @logto/js, io.logto.sdk:kotlin.

Exigences de base

Tout SDK core doit contenir :

  • Types
  • Fonctions utilitaires
  • Fonctions core

Types

OidcConfigResponse

La configuration du fournisseur d’identité (Identity provider), qui peut être récupérée via l'API /oidc/.well-known/openid-configuration.

Propriétés

NomType
authorizationEndpointstring
tokenEndpointstring
endSessionEndpointstring
revocationEndpointstring
jwksUristring
issuerstring
CodeTokenResponse

Les données de réponse de /oidc/token (par jeton d’autorisation).

Propriétés

NomTypeRequis
accessTokenstring
refreshTokenstring
idTokenstring
scopestring
expiresInnumber
RefreshTokenResponse

Les données de réponse de /oidc/token (par jeton de rafraîchissement) lors du rafraîchissement des jetons par un jeton de rafraîchissement.

Propriétés

NomTypeRequis
accessTokenstring
refreshTokenstring
idTokenstring
scopestring
expiresInnumber
IdTokenClaims

Revendications (Claims) portées par le jeton d’identifiant.

Propriétés

NomTypeRequis
substring
audstring
expnumber
iatnumber
issstring
atHashstring
usernamestring
namestring
avatarstring

Fonctions utilitaires

generateCodeVerifier

Générer un vérificateur de code.
La longueur du vérificateur de code est codée en dur à 64.
La valeur de retour DOIT être chiffrée en une chaîne de format base64 sûre pour les URL.

Référence

Paramètres

Aucun.

Type de retour

string

generateCodeChallenge

Générer un défi de code basé sur un vérificateur de code.
Cette méthode chiffre le vérificateur de code et renvoie le résultat dans un format Base64 sûr pour les URL.
Nous codons en dur l'algorithme de chiffrement en tant que SHA-256 dans Logto V1.

Référence

Paramètres

NomTypeRemarques
codeVerifierstringGénéré par generateCodeVerifier

Type de retour

string

generateState

"State" est utilisé pour prévenir l'attaque CSRF.
La longueur du "state" est codée en dur à 64.
La chaîne de résultat à retourner DOIT être chiffrée en une chaîne de format base64 sûre pour les URL.

Référence

Paramètres

Aucun.

Type de retour

string

decodeIdToken

Décoder un jeton d’identifiant sans vérification secrète.
Retourne un IdTokenClaims qui porte toutes les revendications de jeton dans la section de charge utile.

Paramètres

NomType
tokenstring

Type de retour

IdTokenClaims

Exceptions

  • Le token n'est pas un JWT valide.
verifyIdToken

Vérifier si un jeton d’identifiant est légal.

Vérifier la clé de signature

OIDC prend en charge le JSON Web Key Set.
Cette fonction accepte un objet JsonWebKeySet d'une bibliothèque tierce (jose) pour la vérification.

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

Vérifier les revendications

  • Vérifier que le iss dans le jeton d’identifiant correspond à l'émetteur de ce jeton.
  • Vérifier que la revendication aud (Audience) est égale à l'ID client.
  • Vérifier que l'heure actuelle est avant l'heure d'expiration.
  • Vérifier que l'heure d'émission (iat) n'est pas supérieure à +/- 1 minute par rapport à l'heure actuelle.

Référence

Paramètres

NomType
idTokenstring
clientIdstring
issuerstring
jwksJsonWebKeySet

Type de retour

void

Exceptions

  • Échec de la vérification de la clé de signature
  • Échec de la vérification des revendications
verifyAndParseCodeFromCallbackUri

Vérifier que le callbackUri de connexion est légal et retourner le code extrait de callbackUri.

Vérifier l'URI de rappel

  • Vérifier que le callbackUri doit commencer par redirectUri
  • Vérifier qu'il n'y a pas d'error dans le callbackUri (se référer à Réponse d'erreur dans l'URI de redirection).
  • Vérifier que le callbackUri contient state, qui doit être égal à la valeur state que vous avez spécifiée dans generateSignInUri.
  • Vérifier que le callbackUri contient la valeur du paramètre code, que vous utiliserez lors de la requête à /oidc/token (par jeton de rafraîchissement).

Paramètres

NomType
callbackUristring
redirectUristring
statestring

Type de retour

string

Exceptions

  • Échecs de vérification

Fonctions core

fetchOidcConfig

Retourner OidcConfigResponse en faisant une requête à /oidc/.well-known/openid-configuration.

Paramètres

NomTypeRemarques
endpointstringLe point de service OIDC

Type de retour

OidcConfigResponse

Exceptions

  • Échec de la récupération
generateSignInUri

Paramètres

NomTypeRequisRemarques
authorizationEndpointstring
clientIdstring
redirectUristring
codeChallengestring
statestring
scopesstring[]L'implémentation peut varier selon les spécifications du langage.
resourcesstring[]L'implémentation peut varier selon les spécifications du langage.
promptstringPar défaut : consent.

L'URL sera générée en fonction de authorizationEndpoint et contiendra les paramètres de requête suivants :

Paramètres de requête de l'URL de connexion

Clé de requêteRequisRemarques
client_id
redirect_uri
code_challenge
code_challenge_methodCodé en dur en tant que S256.
state
scopescope contient toujours openid et offline_access, même si la portée d'entrée fournit une valeur de portée nulle ou vide.
resourceNous pouvons ajouter la ressource à l'uri plus d'une fois, le backend les convertira en une liste. e.g. resource=a&resource=b
response_typeCodé en dur en tant que code.
prompt

Type de retour

string

generateSignOutUri

Paramètres

NomTypeRequis
endSessionEndpointstring
idTokenstring
postLogoutRedirectUristring

L'URL à générer sera basée sur endSessionEndpoint et contiendra les paramètres de requête suivants :

Paramètres de requête de l'URL de déconnexion

Clé de requêteRequisRemarques
id_token_hintle paramètre idToken saisi
post_logout_redirect_urile paramètre postLogoutRedirectUri saisi

Type de retour

string

fetchTokenByAuthorizationCode

Récupérer un jeton (CodeTokenResponse) en faisant une requête à /oidc/token (par jeton d’autorisation).

Paramètres

NomTypeRequis
tokenEndpointstring
codestring
codeVerifierstring
clientIdstring
redirectUristring
resourcestring

Requête HTTP

  • Endpoint : /oidc/token
  • Méthode : POST
  • Content-Type : application/x-www-form-urlencoded
  • Charge utile :
Clé de requêteTypeRequis
grant_typestring: 'authorization_code'
codestring
code_verifierstring
client_idstring
redirect_uristring
resourcestring

Type de retour

CodeTokenResponse

Exceptions

  • Échec de la récupération
fetchTokenByRefreshToken

Récupérer un jeton (RefreshTokenTokenResponse) via /oidc/token (par jeton de rafraîchissement).

Paramètres

NomTypeRequis
tokenEndpointstring
clientIdstring
refreshTokenstring
resourcestring
scopesstring[]

Requête HTTP

  • Endpoint : /oidc/token
  • Méthode : POST
  • Content-Type : application/x-www-form-urlencoded
  • Charge utile :
Clé de requêteTypeRequisRemarques
grant_typestring: 'refresh_token'
refresh_tokenstring
client_idstring
resourcestring
scopestringnous joignons les valeurs scopes avec un espace pour construire cette chaîne scope

Type de retour

RefreshTokenTokenResponse

Exceptions

  • Échec de la récupération
revoke

Faire une requête à l'API /oidc/token/revocation pour notifier au serveur d’autorisation qu'un jeton de rafraîchissement ou d’accès précédemment obtenu n'est plus nécessaire.

Paramètres

NomTypeRemarques
revocationEndpointstring
clientIdstring
tokenstringjeton à révoquer

Requête HTTP

  • Endpoint : /oidc/token/revocation
  • Méthode : POST
  • Content-Type : application/x-www-form-urlencoded
  • Charge utile :
Clé de requêteType
client_idstring
tokenstring

Type de retour

void

Exceptions

  • Échec de la révocation