Jeton opaque
Au cours du processus d'authentification, si aucune ressource n'est spécifiée, Logto émettra un jeton d’accès (opaque token) au lieu d'un JWT. Le jeton opaque est une chaîne aléatoire et il est beaucoup plus court qu'un JWT :
{
"access_token": "some-random-string", // jeton opaque
"expires_in": 3600,
"id_token": "eyJhbGc...aBc", // JWT
"scope": "openid profile email",
"token_type": "Bearer"
}
Le jeton opaque peut être utilisé pour appeler le point de terminaison userinfo et accéder aux ressources protégées qui nécessitent une Authentification. Puisqu'il ne s'agit pas d'un JWT, comment le serveur de ressources peut-il le valider ?
Logto fournit un point de terminaison d'introspection qui peut être utilisé pour valider les jetons opaques. Par défaut, le point de terminaison d'introspection est /oidc/token/introspection
et accepte les requêtes POST
. Le paramètre suivant est requis :
token
: le jeton opaque à valider
Le point de terminaison nécessite également une Authentification client. Vous pouvez utiliser l'une des méthodes suivantes :
- Authentification HTTP Basic : Utilisez l'en-tête
Authorization
avec la valeurBasic <base64-encoded-credentials>
. Les informations d'identification doivent être l'ID client et le secret client séparés par un deux-points (:
) et encodés en base64. - Authentification HTTP POST : Utilisez les paramètres
client_id
etclient_secret
:client_id
: l'ID client de l'application qui a demandé le jetonclient_secret
: le secret client de l'application qui a demandé le jeton
L'ID client (ID de l'application) et le secret client (secret de l'application) peuvent être les informations d'identification de l'application de toute application "web traditionnelle" ou "machine à machine" dans Logto. Le point de terminaison d'introspection renverra une erreur si les informations d'identification sont invalides.
Le point de terminaison d'introspection renvoie un objet JSON avec les Revendications du jeton :
{
"active": true, // si le jeton est valide ou non
"sub": "1234567890" // le sujet du jeton (l'ID utilisateur)
}
Si le jeton est invalide, le champ active
sera false
et le champ sub
sera omis.
Voici un exemple non normatif de la requête d'introspection :
curl --location \
--request POST 'https://[tenant-id].logto.app/oidc/token/introspection' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'token=some-random-string' \
--data-urlencode 'client_id=1234567890' \
--data-urlencode 'client_secret=1234567890'
N'oubliez pas de remplacer [tenant-id]
par votre ID de locataire.