2017-07-24 1 views
0

J'ai du mal à obtenir que Auth0 renvoie les jetons d'accès au format JWT. J'ai besoin d'eux dans le format JWT afin que je puisse les vérifier en utilisant une bibliothèque Java JWT.Auth0 Jetons d'accès JWT

J'utilise Auth0 lock pour se connecter et utiliser /oauth/token pour obtenir le jeton d'accès - J'ai essayé de placer le public à notre identifiant API (en plusieurs endroits, y compris les auth de verrouillage params, et la charge utile /oauth/token), sans succès - le jeton d'accès est renvoyé mais pas un JWT.

Ou bien existe-t-il une bibliothèque Java pour valider les jetons d'accès Auth0 "natifs"?

var options = { auth: { redirectUrl: '<redirect_link>', responseType: 'code', params: { audience: '<API_identifier>', scope: 'openid offline_access' } }, allowedConnections: ['Username-Password-Authentication'] };

var lock = new Auth0Lock('<clientId>', '<auth0_Host>', options); lock.show();

Le code retourné est utilisé pour POST à ​​https://<host>/oauth/token avec des données:

client_id=<client_id>&redirect_uri=<redirect_url>&client_secret=<client_secret>&code=<returned_code>&grant_type=authorization_code&audience=<API_identifier>

Ce qui est réussi, mais le jeton d'accès n'est pas JWT, par exemple: "access_token":"sG99DAJI789SYgTj"

En utilisant la portée openid renvoie un id_token au format JWT, mais à la lecture de la documentation, ce jeton ne doit pas être utilisé pour l'autorisation de l'API.

+0

Pouvez-vous ajouter un exemple pour voir à quoi ressemble votre jeton? – pedrofb

Répondre

3

Il semble que Auth0 utilise OpenID connect, c'est-à-dire une extension de OAuth2. Après une authentification de l'utilisateur final avec succès, le serveur retourne un ID de jeton au format JWT et un jeton d'accès

ID de jeton

L'ID de jeton est un jeton de sécurité contenant des allégations au sujet de l'authentification d'un Utilisateur final par un serveur d'autorisation lors de l'utilisation d'un client et éventuellement d'autres revendications demandées. Le jeton d'identité est représenté sous la forme d'un jeton Web JSON (JWT) [JWT].

Vous pouvez valider le jeton d'ID à côté client en utilisant une bibliothèque JWT, mais les règles de validation des jetons d'accès sont différents

3.2.2.9. Jeton d'accès Validation

Pour valider un jeton d'accès émis à partir du point de terminaison d'autorisation avec un ID de jeton, le client doit effectuer les opérations suivantes:

  1. Hash les octets de la représentation ASCII du access_token avec le hachage algorithme spécifié dans JWA pour le paramètre d'en-tête alg de l'en-tête JOSE du jeton ID. Par exemple, si l'alg est RS256, l'algorithme de hachage utilisé est SHA-256. Prenez la moitié la plus à gauche du hachage et l'encodage base64url.

  2. La valeur de at_hash dans le jeton ID DOIT correspondre à la valeur produite à l'étape précédente.

Donc, essentiellement pour valider que vous devez calculer le résumé de l'access_token en utilisant l'algorithme de hachage d'ID de jeton, et vérifiez qu'il correspond à la at_hash réclamation ID jeton