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_method✅Codé en dur en tant que S256.
state✅
scope✅scope 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_type✅Codé 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_hint✅le 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