Aller au contenu principal

Convention du SDK de la plateforme

Le SDK de la plateforme fournit un moyen standard d'intégrer le client avec le service Logto sur la plateforme spécifique et accélère le processus d'intégration.

  • Le SDK de la plateforme encapsule le noyau avec une implémentation spécifique à la plateforme.
  • Le SDK de la plateforme doit fournir des types de base qui facilitent l'utilisation du SDK.
  • Le SDK de la plateforme doit être exporté en tant que classe nommée LogtoClient.

Types de base

LogtoConfig
NomTypeRequisValeur par défautRemarques
endpointstringLe point de terminaison du service OIDC.
appIdstringL'identifiant de l'application provient de l'application que nous avons enregistrée dans le service Logto.
scopesstring[][openid, offline_access, profile]Ce champ contient toujours openid, offline_access et profile.
resourcesstring[]Les indicateurs de ressource protégée que nous voulons utiliser.
promptstringconsentLa valeur de l'invite utilisée dans generateSignInUri.
usingPersistStoragebooleantrueDécider de stocker ou non les informations d'identification sur la machine locale.

*Remarques

  • Vous pouvez étendre ce LogtoConfig si vous en avez besoin.
  • usingPersistStorage est uniquement fourni dans les SDK clients. Par exemple, iOS, Android et SPA.
AccessToken
NomTypeRemarques
tokenstring
scopestring
expiresAtnumberHorodatage en secondes

LogtoClient

Propriétés

logtoConfig

Type

LogtoConfig

oidcConfig

Type

OidcConfigResponse?

accessTokenMap

Type

Map<string, AccessToken>

Clé

  • La clé doit être construite avec scope et resource.
  • Les valeurs dans scope doivent être triées par ordre alphabétique et jointes par un espace.
  • La clé doit être construite selon le modèle : ${scope}@${resource}.
  • Si le scope ou resource est nul ou vide, leur valeur doit être traitée comme vide.

Par exemple, "offline_access openid read:usr@https://logto.dev/api", "@https://logto.dev/api", "openid@", "@".

Valeur

  • AccessToken, qui utilise la propriété expiresAt pour indiquer l'heure exacte à laquelle un jeton d’accès expire.

Remarques

  • Le scope sera toujours une valeur nulle car nous ne prenons pas en charge les portées personnalisées dans Logto V1.
  • Lors de la création de la clé du jeton d’accès pour stocker un jeton d’accès :
    • scope sera toujours une valeur nulle.
    • si le jeton d’accès n'est pas un jwt, traiter le resource comme une valeur nulle.
    • si le jeton d’accès est un jwt, décoder le jeton d’accès et utiliser la valeur de la revendication aud de la charge utile comme partie resource de la clé du jeton d’accès.
refreshToken

Type

string?

Remarques

refreshToken sera défini ou mis à jour dans les circonstances suivantes :

  • Charger refreshToken depuis le stockage.
  • Le serveur renvoie un refreshToken dans la réponse lors de la récupération du jeton avec succès.
  • Déconnexion (sera défini sur null).
idToken

Type

string?

Remarques

  • idToken doit être vérifié s'il provient du backend.
  • idToken sera défini ou mis à jour dans les circonstances suivantes :
    • Charger idToken depuis le stockage.
    • Le serveur renvoie un idToken dans la réponse lors de la récupération du jeton avec succès.
    • Déconnexion (sera défini sur null).

Méthodes

constructor

Paramètres

ParamètreType
logtoConfigLogtoConfig

Type de retour

LogtoClient

Remarques

  • Vous pouvez ajouter des paramètres supplémentaires si vous en avez besoin.
  • Si l'utilisation du stockage persistant est activée dans logtoConfig, le SDK de la plateforme fournira les fonctionnalités suivantes :
    • Stocker des données persistantes avec une clé unique basée sur clientId.
    • Charger refreshToken et idToken depuis la machine locale lors de l'initialisation.
    • Stocker refreshToken et idToken localement sur Core.fetchTokenByAuthorizationCode et Core.fetchTokenByRefreshToken.
isAuthenticated

Pour savoir si un utilisateur est authentifié ou non.
Cela peut également être défini comme un accesseur.

Un utilisateur est considéré comme authentifié lorsque :

  • Nous avons obtenu un jeton d’identifiant avec succès.
  • Nous avons chargé un jeton d’identifiant depuis la machine locale.

Paramètres

Aucun.

Type de retour

boolean

SignIn

Cette méthode doit démarrer un flux de connexion et le SDK de la plateforme doit prendre en charge toutes les étapes nécessaires à une autorisation pour se terminer, y compris le processus de redirection de connexion.

L'utilisateur sera authentifié après que cette méthode ait été appelée avec succès.

Le processus de connexion s'appuiera sur les fonctions du SDK Core :

  • generateSignInUri
  • verifyAndParseCodeFromCallbackUri
  • fetchTokenByAuthorizationCode

Remarques :

  • Parce que generateSignInUri inclut les ressources dont nous avons besoin, nous n'avons pas besoin de passer la ressource à la fonction fetchTokenByAuthorizationCode.

Paramètres

ParamètreType
redirectUristring

Type de retour

void

Exceptions

  • Toute erreur survenant au cours de ce processus de connexion.
SignOut

Le processus de déconnexion doit suivre les étapes suivantes :

  1. Effacer le stockage local, les cookies, les données persistantes ou autre chose.
  2. Révoquer le jeton de rafraîchissement obtenu via Core.revoke (le service Logto révoquera tous les jetons associés si le jeton de rafraîchissement est révoqué).
  3. Rediriger l'utilisateur vers le point de terminaison de déconnexion de Logto à moins que l'étape 1 ne supprime la session de la page de connexion.

Remarques :

  • À l'étape 2, Core.revoke est un appel asynchrone et ne bloquera pas le processus de déconnexion même s'il échoue.
  • L'étape 3 repose sur Core.generateSignOutUri pour générer le point de terminaison de déconnexion de Logto.

Paramètres

ParamètreTypeRequisValeur par défaut
postLogoutRedirectUristringnull

Type de retour

void

Exceptions

  • Toute erreur survenant au cours de ce processus de déconnexion.
getAccessToken

getAccessToken récupère un AccessToken par resource et scope depuis accessTokenMap puis renvoie la valeur token de cet AccessToken.

Nous définissons le scope sur null lors de la création de la clé de accessTokenMap car nous ne prenons pas en charge les portées personnalisées dans Logto V1.

Remarques

  • Si un AccessToken correspondant ne peut pas être trouvé, effectuer une action Core.fetchTokenByRefreshToken pour récupérer le jeton nécessaire.
  • Si le accessToken n'est pas expiré, alors renvoyer la valeur token à l'intérieur.
  • Si le accessToken est expiré, alors effectuer une action Core.fetchTokenByRefreshToken pour récupérer un nouveau accessToken , mettre à jour le accessTokenMap local et renvoyer la nouvelle valeur token à l'intérieur.
  • Si Core.fetchTokenByRefreshToken échoue, alors informer l'utilisateur de l'exception survenue.
  • Si le refreshToken ne peut pas être trouvé, alors informer l'utilisateur d'une exception non autorisée.
  • Ce n'est qu'en obtenant un refreshToken après la connexion que nous pouvons effectuer une action Core.fetchTokenByRefreshToken.

Paramètres

ParamètreTypeRequisValeur par défaut
resourcestringnull

Type de retour

string

Exceptions

  • L'utilisateur n'est pas authentifié.
  • La resource d'entrée n'est pas définie dans le logtoConfig.
  • Aucun jeton de rafraîchissement trouvé avant Core.fetchTokenByRefreshToken.
  • Core.fetchTokenByRefreshToken a échoué.
getIdTokenClaims

getIdTokenClaims renvoie un objet qui contient les revendications de la propriété idToken.

Paramètres

Aucun.

Type de retour

IdTokenClaims

Exceptions

  • L'utilisateur n'est pas authentifié.