2017-08-21 2 views
3

Je travaille afin de tirer parti de l'utilisation de l'AD pour l'authentification et l'autorisation de plusieurs applications, et j'étudie actuellement comment implémenter ledit processus.ADAL JS - Acquire token: Échec de l'opération de renouvellement de jeton

Ceci est pour un flux Web-Application vers Web.

Je crée une instance AuthenticationContext et l'utilise pour se connecter, et cela fonctionne normalement. (organisation Code simplifié à des fins de démonstration)

this.adal = new AuthenticationContext({ 
    tenant: this.tenantId, 
    clientId: this.clientId, 
    redirectUri: this.redirectUri, 
    callback: this.loginCallback, 
    popUp: true 
}); 

this.adal.login(); 

Il est quand je tente d'acquérir un jeton que le comportement devient louche. Il est pertinent de dire que le registre de cette application dans l'AD a la permission "Se connecter et lire le profil utilisateur" sur Microsoft Graph API. L'erreur est écrite sur la console comme suit: "L'opération de renouvellement de jeton a échoué en raison d'un dépassement de délai"; Le plus petit jeton est écrit comme un objet nul. Un bref regard sur l'onglet « Réseau » tout en inspectant la page avec Chrome révèle une telle ressource:

authorize?response_type=token&client_id=xxxxx&resource=xxxxx&redirect_uri=http://localhost:8080(.....) 

Le statut de ladite ressource est 302.

Vous avez des indices? Merci!

+0

Essayez de regarder la trace réseau pour voir si la requête est réellement suspendue ou si une erreur est générée. Aussi, l'avez-vous essayé plusieurs fois et cela se passe-t-il constamment? –

Répondre

0

Ok .. il semble que je l'ai pensé à elle, avec un peu d'aide de cet article click for article et ce click for very cool info

J'ai remplacé le bit de code suivant, dans le rappel de connexion

this.adal.acquireToken("https://graph.microsoft.com", function(error, token) { 
    console.log(error); 
    console.log(token); 
}); 

pour cela:

var cachedToken = this.adal.getCachedToken(client_id_goes_here); 
    if (cachedToken) { 
     this.adal.acquireToken("https://graph.microsoft.com", function(error, token) { 
      console.log(error); 
      console.log(token); 
     }); 
    } 

Et enfin il suffit d'ajouter cette ligne de code à une fonction qui est exécutée après la redirection de la méthode acquireToken s à la page:

this.adal.handleWindowCallback(); 

Espérons que cela soit utile pour les autres utilisateurs de ce numéro!