4
votes

Obtention de jetons d'accès auprès de Postman: les jetons émis pour le type de client `` Application à page unique '' ne peuvent être échangés que via des demandes d'origine croisée

Nous sommes récemment passés du flux d'octroi implicite au flux de code d'autorisation avec PKCE pour notre application, et nous rencontrons maintenant des problèmes pour obtenir des jetons d'accès d'Azure AD à partir de Postman. L'application est enregistrée dans Azure AD et nous utilisons essentiellement la procédure Postman décrite ici: https://developer.mypurecloud.com/api/rest/postman/index.html#enable_authorization . L'appel du point de terminaison https://login.microsoftonline.com/{tenant}/oauth2/v2.0/authorize fonctionne bien, mais il rencontre une erreur lors de l'appel de https://login.microsoftonline.com/{tenant}/oauth2/v2.0/token :

"Error: Cound not complete OAuth 2.0 token request: "AADSTS9002327: Tokens issued for the 'Single-Page Application' client-type may only be redeemed via cross-origin requests.\r\nTrace ID: 8253f622-3425-4d0a-817c-281f86097300\r\nCorrelation ID: 9d84460f-ec02-4ace-af03-14d948e3d4ad\r\nTimestamp: 2020-04-15 14:02:03Z"

Voici la demande de jeton d'accès: entrez la description de l'image ici

Comment pouvons-nous obtenir des jetons d'accès depuis Azure AD à l'aide de Postman avec ce flux d'autorisation?


4 commentaires

Vous devez d'abord demander le auth code puis avec ce code, demander un jeton d'accès.


Postman fait cela automatiquement avec ce module "jeton de demande". Tout d'abord, il appelle l'URL d'authentification pour obtenir le code d'authentification, puis l'URL du jeton pour obtenir le jeton d'accès. Cependant, il y a un problème CORS ici que je ne comprends pas.


@PalBo J'ai un problème similaire ici. Avez-vous réussi à trouver une solution à cela?


Actuellement, j'obtiens le jeton d'accès du navigateur en me connectant avec un nom d'utilisateur et un mot de passe. Vous pouvez peut-être trouver des réponses ici: github.com/postmanlabs/postman-app-support/issues/3825


3 Réponses :


-1
votes

1.Vous devez d'abord obtenir le code dans le navigateur , Entrez les informations de demande suivantes dans la barre d'adresse du navigateur :

entrez la description de l'image ici

entrez la description de l'image ici

2.Ensuite, entrez le code obtenu et d'autres informations de demande dans le facteur, vous obtiendrez le jeton d'accès entrez la description de l'image ici 3.Veuillez vérifier: https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-auth-code-flow


2 commentaires

C'est exactement ce que j'ai fait, mais l'erreur mentionnée dans le message d'origine est le problème.


Le code d'authentification généré à partir de swagger a une longueur de 644 caractères, tandis que le code d'authentification généré à partir d'une seule page de l'application React js a une longueur de 844 caractères; le code d'authentification antérieur fonctionne avec succès tandis que plus tard avec plus de nombre de caractères nous donne cette erreur d'application d'une seule page



2
votes

Apparemment, c'est un problème car la documentation est déroutante.

Sur l'inscription de l'application Azure Active Directory. Assurez-vous d'ajouter l'URL de redirection dans la catégorie " Applications mobiles et de bureau ".

Lorsque vous lisez la documentation, il semble que vous deviez ajouter l' URL de redirection sous les applications à page unique. Il affiche même un message de confirmation disant " Votre URI de redirection est éligible pour le flux de code d'autorisation avec PKCE. " Mais ce n'est pas vrai.


1 commentaires

Vous pouvez également ajouter l'URL de rappel que Postman utilise lors de la délégation de la connexion au navigateur. Cochez «Autoriser à l'aide du navigateur» lors de l'obtention d'un nouveau jeton et vous verrez https://oauth.pstmn.io/v1/callback . Ajoutez cela aux URI "Applications mobiles et de bureau".



0
votes

Pour obtenir un refresh_token, vous devez ajouter "offline_access" à la portée.

La documentation de la réponse à la demande de jeton d'accès indique:

Un jeton d'actualisation OAuth 2.0. L'application peut utiliser ce jeton pour acquérir des jetons d'accès supplémentaires après l'expiration du jeton d'accès actuel. Refresh_tokens ont une longue durée de vie et peuvent être utilisés pour conserver l'accès aux ressources pendant de longues périodes. Pour plus de détails sur l'actualisation d'un jeton d'accès, reportez-vous à la section ci-dessous. Remarque: fourni uniquement si la portée offline_access a été demandée.

Documentation


0 commentaires