Comment conserver un jeton OAuth2 (ou utiliser un jeton d'actualisation) dans les collections Postman?
L'objectif
Être en mesure d'exécuter une collection sans passer par le processus d'autorisation de chaque appel individuellement avant l'exécution de la collection.
Ce que j'ai tenté/remarqué
- Lors de l'utilisation de la OAuth2 autorisation helper en Facteur, je n'ai pas découvert une méthode pour enregistrer un retour d'actualisation de jeton, et donc de l'utiliser lorsque le jeton d'accès expire pour en obtenir un nouveau. (Je l'ai suggéré cette fonctionnalité sera placé dans le helper dans le Facteur Github Questions.)
- J'ai essayé de créer quelques étapes du début de la collection, afin de reproduire l'aide, mais pas à passer l'étape où l'interaction de l'utilisateur est requise pour approuver/refuser (ce qui est logique puisque c'est un risque en sécurité de l'autre). Cependant, je n'arrive pas à comprendre comment l'invite de l'utilisateur, la manière dont le OAuth2 helper.
- J'ai pris mes attentes d'un cran en ce qui concerne l'actualisation de jeton et je pensais simplement exécuter l'authentification sur le premier essai dans la liste, enregistrer le jeton d'accès en quelque sorte dans un monde ou la variable d'environnement, et puis en utilisant le jeton dans la suite les tests, mais je n'ai pas trouvé un moyen de sauver le jeton d'accès générés par la OAuth2 helper.
J'aimerais savoir si il existe une solution pour ce qui entraîne dans les collections étant en mesure d'exécuter avec un minimum d'effort mis dans l'autorisation. Cela devient de plus en plus important avec le plus de tests écrits dans une collection qui utilisent tous OAuth2 autorisation.
Note de côté: j'ai été en utilisant le Facteur de client mac, dans le cas où il y a des clients, je suis pas d'.
source d'informationauteur Nate Ritter
Vous devez vous connecter pour publier un commentaire.
Ok, entrez d'abord votre jeton OAUTH URL, cliquez sur l'onglet Corps, et de remplir ces paramètres POST:
client_id, grant_type, nom d'utilisateur, mot de passe, remplacer.
Ensuite, cliquez sur l'onglet Test, entrez le texte, puis appuyez sur Envoyer:
Puis entrez l'un de vos adresses Url des applications, cliquez sur l'Onglet en-Têtes, et entrer un paramètre d'Autorisation avec une valeur au Porteur {{access_token}}. Puis cliquez sur Envoyer.
Voila!
J'ai trouvé une réponse ici sur github.
D'abord, le programme d'installation de ces variables d'environnement:
url
: (votre API endpoint)access_token
: (vide)refresh_token
: (vide)client_id
: (votre client_id)client_secret
: (votre client_secret)username
: (votre pseudo)password
: (votre mot de passe)Ensuite, créez un nouvel appel qui obtient un
access_token
à l'aide de lapassword
grant_type
.Dans mon cas, je POSTE pour
{{url}}/access_token
. Envoyé avec cet appel, les informations suivantesform-data
paires clé/valeur spécifiée dans l'onglet Corps:grant_type
:password
username
:{{username}}
password
:{{password}}
client_id
:{{client_id}}
client_secret
:{{client_secret}}
Envoyer ce POST va provoquer ce genre de réponse:
Puis, dans les Tests de l'onglet, j'ai ajouté le code suivant pour attribuer deux des variables d'environnement,
access_token
etrefresh_token
.REMARQUE: j'ai aussi mis un test, juste pour s'assurer qu'au moins cet appel a fonctionné correctement, bien que cela n'a rien à voir avec la question d'origine:
Maintenant tout nouvel appel je crée peut utiliser le
access_token
généré par le premier appel comme d'une variable d'environnement comme ceci:{{access_token}}
. Dans mon cas, je vais dans l'onglet en-Têtes dans un appel/test et ajouter cette clé/paire:Authorization
:Bearer {{access_token}}
Points Bonus: je n'ai pas donné un exemple ici, mais en théorie, je pourrais ajouter une pré-demande de script qui teste le courant (non vide)
access_token
à l'encontre de l'API et, si elle échoue, en obtenir un nouveau en utilisant le (non-vide)refresh_token
. Cela ferait-il si je n'aurais pas à vous soucier de jetons d'accès à expiration.Que tout est dit, je suis pas fan de cette solution, car il nécessite l'ajout de cette première access_token appel à tous les sous-dossiers dans ma collection parce que si je veux exécuter un sous-dossier uniquement, et non de l'ensemble de cette collection, j'ai besoin de m'assurer d'avoir une nouvelle access_token. Ne pas le faire signifierait que tous les tests échouent lorsqu'un access_token expire. Si vous n'exécutez jamais de sous-dossiers séparément dans votre Collection Coureur, vous pourriez vous en sortir avec seulement la création d'un access_token appel et de le définir comme le premier appel à courir dans la collection.
Mais, pour cette raison, je ne vais pas donner la bonne réponse pour l'instant. Je devine qu'il y a une meilleure solution que ce que je suis venu avec, dans l'idéal, celui où je n'ai pas à dupliquer le même access_token appel/test dans chaque sous-dossier, mais ne obtenir le bénéfice de l'automatisé, tests non-interactifs avec la flexibilité de l'exécution d'un sous-dossier par lui-même ou l'ensemble de cette collection.