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
LogtoConfig
si vous en avez besoin. usingPersistStorage
est 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
scope
etresource
. - 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
ouresource
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 partieresource
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
).
- 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
refreshToken
etidToken
depuis la machine locale lors de l'initialisation. - Stocker
refreshToken
etidToken
localement surCore.fetchTokenByAuthorizationCode
etCore.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 :
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è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.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è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
AccessToken
correspondant ne peut pas être trouvé, effectuer une actionCore.fetchTokenByRefreshToken
pour récupérer le jeton nécessaire. - Si le
accessToken
n'est pas expiré, alors renvoyer la valeurtoken
à l'intérieur. - Si le
accessToken
est expiré, alors effectuer une actionCore.fetchTokenByRefreshToken
pour récupérer un nouveauaccessToken
, mettre à jour leaccessTokenMap
local 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
refreshToken
aprè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
resource
d'entrée n'est pas définie dans lelogtoConfig
. - 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é.