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
| Nom | Type | Requis | Valeur par défaut | Remarques |
|---|---|---|---|---|
| endpoint | string | ✅ | Le point de terminaison du service OIDC. | |
| appId | string | ✅ | L'identifiant de l'application provient de l'application que nous avons enregistrée dans le service Logto. | |
| scopes | string[] | [openid, offline_access, profile] | Ce champ contient toujours openid, offline_access et profile. | |
| resources | string[] | Les indicateurs de ressource protégée que nous voulons utiliser. | ||
| prompt | string | consent | La valeur de l'invite utilisée dans generateSignInUri. | |
| usingPersistStorage | boolean | true | Décider de stocker ou non les informations d'identification sur la machine locale. |
*Remarques
- Vous pouvez étendre ce
LogtoConfigsi vous en avez besoin. usingPersistStorageest uniquement fourni dans les SDK clients. Par exemple, iOS, Android et SPA.
AccessToken
| Nom | Type | Remarques |
|---|---|---|
| token | string | |
| scope | string | |
| expiresAt | number | Horodatage en secondes |
LogtoClient
Propriétés
logtoConfig
Type
LogtoConfig
oidcConfig
Type
OidcConfigResponse?
accessTokenMap
Type
Map<string, AccessToken>
Clé
- La clé doit être construite avec
scopeetresource. - Les valeurs dans
scopedoivent ê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
scopeouresourceest 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éexpiresAtpour indiquer l'heure exacte à laquelle un jeton d’accès expire.
Remarques
- Le
scopesera 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 :
scopesera toujours une valeur nulle.- si le jeton d’accès n'est pas un jwt, traiter le
resourcecomme 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
audde la charge utile comme partieresourcede la clé du jeton d’accès.
refreshToken
Type
string?
Remarques
refreshToken sera défini ou mis à jour dans les circonstances suivantes :
- Charger
refreshTokendepuis le stockage. - Le serveur renvoie un
refreshTokendans 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
idTokendoit être vérifié s'il provient du backend.idTokensera défini ou mis à jour dans les circonstances suivantes :- Charger
idTokendepuis le stockage. - Le serveur renvoie un
idTokendans la réponse lors de la récupération du jeton avec succès. - Déconnexion (sera défini sur
null).
- Charger
Méthodes
constructor
Paramètres
| Paramètre | Type |
|---|---|
| logtoConfig | LogtoConfig |
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
refreshTokenetidTokendepuis la machine locale lors de l'initialisation. - Stocker
refreshTokenetidTokenlocalement surCore.fetchTokenByAuthorizationCodeetCore.fetchTokenByRefreshToken.
- Stocker des données persistantes avec une clé unique basée sur
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 :
generateSignInUriverifyAndParseCodeFromCallbackUrifetchTokenByAuthorizationCode
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ètre | Type |
|---|---|
| redirectUri | string |
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 :
- Effacer le stockage local, les cookies, les données persistantes ou autre chose.
- 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é). - 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.revokeest un appel asynchrone et ne bloquera pas le processus de déconnexion même s'il échoue. - L'étape 3 repose sur
Core.generateSignOutUripour générer le point de terminaison de déconnexion de Logto.
Paramètres
| Paramètre | Type | Requis | Valeur par défaut |
|---|---|---|---|
| postLogoutRedirectUri | string | null |
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
AccessTokencorrespondant ne peut pas être trouvé, effectuer une actionCore.fetchTokenByRefreshTokenpour récupérer le jeton nécessaire. - Si le
accessTokenn'est pas expiré, alors renvoyer la valeurtokenà l'intérieur. - Si le
accessTokenest expiré, alors effectuer une actionCore.fetchTokenByRefreshTokenpour récupérer un nouveauaccessToken, mettre à jour leaccessTokenMaplocal et renvoyer la nouvelle valeurtokenà 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
refreshTokenaprès la connexion que nous pouvons effectuer une actionCore.fetchTokenByRefreshToken.
Paramètres
| Paramètre | Type | Requis | Valeur par défaut |
|---|---|---|---|
| resource | string | null |
Type de retour
string
Exceptions
- L'utilisateur n'est pas authentifié.
- La
resourced'entrée n'est pas définie dans lelogtoConfig. - Aucun jeton de rafraîchissement trouvé avant
Core.fetchTokenByRefreshToken. Core.fetchTokenByRefreshTokena é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é.