2017-09-15 15 views
1

Je suis actuellement aux prises avec un problème étrange dans l'authentification active d'azur du flux actif du répertoire azur. J'ai mis en place une webapp spa en utilisant msal.js pour connecter les utilisateurs à leur Microsoft Accont.Azure utilisant une URL de rappel incorrecte lors de la connexion par flux implicite

Le userAgentApplication est exécuté comme indiqué ci-dessous:

userAgentApplication = new 
Msal.UserAgentApplication(client_id,null,function(errorDes,token,error,tokenType) 
{ 
     if(error) { 
     console.log(JSON.stringify(error)); 
     return; 
     } 
     },{ redirectUri: 'https://example.com/app/msalCallback.html' }); 

Quand ils cliquent connexion exécutaient le est morceau de code:

logInPopup = function() { 
     var uaa = userAgentApplication; 
     return new Promise(function(resolve,reject) { 

      uaa.loginPopup([ 
       'https://graph.microsoft.com/user.read' 
      ]).then(function(token) { 
       //signin success 
       console.log(token); 
       var user = uaa.getUser(); 
       console.log(JSON.stringify(user)); 
       resolve(user); 
      }, function(error) { 
       console.log(JSON.stringify(error)); 
       reject(error); 
      }); 
     }) 
     } 

Le popup arrive et l'utilisateur essaie de se connecter mais l'erreur suivante apparaît:

Le compte Microsoft rencontre des problèmes techniques. Veuillez réessayer plus tard.

Dans l'URL de la chaîne de paramètres d'erreur est:

ERROR_DESCRIPTION = La valeur fournie pour le paramètre d'entrée « redirect_uri » est pas valide La valeur attendue est « https://login.live.com/oauth20_desktop.srf » ou une URL qui correspond l'URI de redirection enregistré pour cette application client.

Sur d'autres recherches, je trouve que si je configuré la redirection uri pour être

https://example.com/app/msalCallback.html

(Ce que je confirme sur la page d'inscription d'application pour être vrai)

L'URL de redirection /oauth2/v2.0/authorise url dans la page de connexion est:

redirect_uri=https://example.com/app/

Ce qui est bizarre, mais l'uri ci-dessus n'est pas un hasard. Il s'agit en fait du rappel uri pour une application précédemment enregistrée mais supprimée avec le même nom.

Une enquête plus poussée a montré que lorsque je config MSal pour utiliser l'ancien, la connexion redirect_uri passe.

Je suis à court d'idées. Cela ressemble à un bug dans le réseau azur mais je voulais savoir si quelqu'un d'autre a eu ce problème ou au moins me diriger dans la bonne direction pour entrer en contact avec azure pour trouver une solution.

Merci à l'avance

+0

Dans UserAgentApplication, la façon dont vous passez l'URI de redirection semble différente. Pouvez-vous essayer de suivre ce [pattern] (https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/devApps/VanillaJSTestApp/index.html#L42) pour configurer l'URI de redirection? –

+0

merci Navya. Après avoir lu le document, j'ai décidé de passer soigneusement en revue la référence de l'API et vous avez raison de dire que le réglage de la redirection est incorrect. J'aurais dû utiliser 'userAgentApplication.redirectUri = 'https: // exampe.com/app/msalCallback.html'' La plate-forme azure utilise maintenant le rappel correct. – Dapo

Répondre

0

j'ai trouvé la cause du problème après avoir examiné attentivement la documentation msal.js j'ai trouvé que je mettais le redirectUri mal.La manière correcte est la suivante:

var userAgentApplication = new 
Msal.UserAgentApplication(client_id,null,function(errorDes,token,error,tokenType) 
{ 
     if(error) { 
     console.log(JSON.stringify(error)); 
     return; 
     } 
}); 

userAgentApplication.redirectUri = 'https://example.com/app/msalCallback.html' 

espoir qui aide.

concerne