image
image
image
image
image
image

Auth0 get token

Obtenir par programmation des access_token pour un utilisateur par id

dlitsman1

Existe-t-il un moyen de générer des access_token pour un utilisateur par programmation via l’API auth0 ?

J’ai un portail où un utilisateur peut se connecter avec un nom d’utilisateur/mot de passe ou Google. Après une connexion réussie, je dois donner à un utilisateur la possibilité de se connecter à d’autres API, mais je ne veux pas lui demander à nouveau le nom d’utilisateur / mot de passe.

Donc, le cas d’utilisation est le suivant :

  1. Un utilisateur s’authentifie dans un portail spécial
  2. À l’intérieur de ce portail, j’ai une liste de services (différentes API / clients auth0)
  3. Au clic, je veux générer de nouvelles données d’authentification en utilisant les access_token/id_token actuels à utiliser pour ce service

Y a-t-il un moyen de le réaliser en utilisant Auth0 ?

merci!

1 J’aime

Les jetons d’accès

jerdog2

sont émis via les points de terminaison OAuth 2.0 d’Auth0 : et . L’appel de l’un d’entre eux vous accordera une access_token

Auth0 Docs

Access Tokens

Décrit comment les jetons d’accès sont utilisés dans l’authentification basée sur des jetons pour permettre à une application d’accéder à une API une fois qu’un utilisateur s’est authentifié et a autorisé l’accès.

dlitsman3

Pourriez-vous me donner plus de détails sur la façon dont je peux l’utiliser dans ce scénario ? Nous n’utilisons pas la page de verrouillage Auth0, nous avons un formulaire de connexion personnalisé hébergé sur notre domaine.

/authorize nécessite l’utilisation du site Auth0 par l’utilisateur final. Nous utilisons un formulaire d’authentification personnalisé, cela ne fonctionnera pas car un utilisateur n’est pas authentifié sur la page de verrouillage Auth0.

/oauth/token a les subventions suivantes :

  1. - ne fonctionne pas parce que je n’ai pas d’appel. Peut-être puis-je le générer à l’aide de l’API ?
  2. - ne fonctionne pas car il authentifie le client API, et non un utilisateur final.
  3. - ne fonctionne pas pour 2 raisons. Tout d’abord, je ne veux pas stocker le nom d’utilisateur et le mot de passe n’importe où dans une session. 2. Cela ne fonctionne pas pour les comptes Google car il n’y a pas de mots de passe.
  4. - ne fonctionne pas parce qu’il a un but différent.

Est-ce que j’ai raté quelque chose ?

jerdog4

Donc vous n’authentifiez pas du tout les utilisateurs avec Auth0 ? Si c’est le cas, avant de pouvoir obtenir un access_token vous devez d’abord vous authentifier avec Auth0.

S’il me manque quelque chose, faites-moi savoir comment vous vous authentifiez avec Auth0 et nous pouvons partir de là.

dlitsman5

Nous authentifions les utilisateurs avec un flux régulier (grant_type=mot de passe ou rappel de /authorize). À ce stade, un L’utilisateur dispose d’un access_token que nous utilisons pour le valider et récupérer certaines informations le concernant.

Nous avons une liste d’autres services auxquels l’utilisateur a accès. Ils utilisent également Auth0 et partagent les mêmes utilisateurs, mais utilisent des API/clients Auth0 différents pour y accéder. Nous ne pouvons donc pas utiliser le même access_token pour l’utilisateur que nous avons là-bas.

Ce dont j’ai besoin, c’est de créer un access_token que l’utilisateur peut utiliser dans différents services, mais sans demander à nouveau un mot de passe à un utilisateur. J’ai besoin d’un moyen de créer des access_token pour ces clients via l’API.

Est-ce que cela a du sens ?

kimcodes7

@dlitsman vos API sont-elles configurées dans Auth0 ?

Je l’ai peut-être manqué dans les messages, mais quel type d’application avez-vous ? Une application Single Page, une WebApp, etc. Si vous disposez d’une application monopage, vous pouvez utiliser le flux d’octroi implicite.

1 J’aime

dlitsman8

Permettez-moi d’essayer de le décrire en d’autres termes...

Nous avons un PORTAIL. PORTAL est un endroit où nous voulons qu’un utilisateur se connecte.

De plus, nous avons différents services, disons le service A, le service B et le service C. Tous les 4 PORTAL et services utilisent Auth0 pour l’authentification et le partage des utilisateurs, mais utilisent des clients Auth0 différents.

Ce que je veux réaliser, c’est que l’utilisateur se connecte au PORTAIL, il peut ensuite obtenir access_token pour lui-même pour les services A, B et C. Cependant, access_token de PORTAL DEVRAIENT fonctionner uniquement pour PORTAL et non pour Services ABC. Il en va de même pour les services, access_token pour les services ne fonctionne que pour un seul service.

Ainsi, une fois que l’utilisateur s’est connecté au PORTAIL, il verra des boutons supplémentaires tels que « Se connecter au service A(B,C) ». Au clic, il devrait générer de nouvelles access_token pour le service sélectionné. Un utilisateur ne saisit son nom d’utilisateur / mot de passe qu’une seule fois lors de la connexion au PORTAIL.

S’il vous plaît voir la maquette :

dlitsman9

Il s’agit de l’application Web SPA. Le back-end sera responsable de la génération de toutes les clés

dlitsman10

kimcodes :

@dlitsman vos API sont-elles configurées dans Auth0 ?

oui. Désolé, j’ai manqué cette partie.

Juste pour que ce soit clair, PORTAL utilise également Auth0 pour l’authentification, mais n’utilise pas le verrouillage Auth0. Nous hébergeons donc la page de connexion sur notre domaine et utilisons le point de terminaison Auth0 avec le type d’octroi.

andrewj11

Salut @dlitsman avez-vous compris cela ? Je me penche sur le même problème en ce moment.

dlitsman12

Salut @andrewj Malheureusement, non. Nous n’avons pas pu utiliser l’API Auth0 pour cela et nous avons créé un solution personnalisée pour résoudre ce problème

L’une des solutions que nous avons trouvées était celle de refresh_token. Le portail principal enregistre ce jeton et peut ensuite l’utiliser pour générer de nouvelles auth_token. Je ne me souviens pas de tous les détails... J’espère que cela vous sera utile.

Quoi qu’il en soit, je pense toujours que l’API Auth0 devrait permettre de générer des jetons de manière programmatique en utilisant les informations d’identification de l’API de gestion. Ce sont mes utilisateurs après tout et j’y ai un accès complet (y compris en changeant un mot de passe et en les supprimant) à l’aide de clés API. Mais pour une raison quelconque, je n’ai pas le droit de générer des access_token valides... Bizarre. J’espère qu’ils l’amélioreront.

andrewj13

Merci pour la réponse ! Bon sang, ce n’est pas idéal, je vais jeter un coup d’œil à la documentation du jeton de rafraîchissement. Je ne connais pas assez OAuth pour savoir si Auth0 peut générer un jeton access_token sans que l’utilisateur ne passe par le flux OAuth. Il semble que nous devrons le faire générer nos propres access_token et revenir à une méthode d’authentification personnalisée à la périphérie de nos API.