2017-10-10 10 views
0

Je suis les instructions de la page this. Je me suis créé un service Windows et je suis bloqué à demander le jeton d'accès d'Azure AD. J'ai réussi à obtenir un code d'autorisation mais j'obtiens l'erreur redirect_uri quand je POST. Voici à quoi ressemble mon code:AADSTS90102: la valeur 'redirect_uri' doit être une valeur absolue absolue. Uri

var dictionary = new Dictionary<string, string> 
      { 
       { "resource", "https%3A%2F%2Foutlook.office365.com"}, 
       {"client_id","Application ID from azure AD portal" }, //-is this ok? 
       {"client_secret","Object ID from azure AD portal" }, //-is this ok? 
       {"grant_type","authorization_code" }, 
       {"redirect_uri",HttpUtility.UrlEncode("https://haw.trustteam.be/") }, 
       { "code","AQABAAIAAAAB..1AiAA"} 
      }; 
      var content = new FormUrlEncodedContent(dictionary); 

      string requestUrl = "https://login.windows.net/common/oauth2/token"; // also tried with login.microsoftonline.com 
      using (HttpClient client = new HttpClient()) 
      { 
       HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, requestUrl); 
       request.Content = content; 

       using (HttpResponseMessage response = await client.SendAsync(request)) 
       { 
        string responseString = await response.Content.ReadAsStringAsync(); 

        return response.Content.ToString(); 
       } 
      } 

Qu'est-ce que je fais de mal?

Répondre

0

La fonction FormUrlEncodedContent permet également de publier des données dans le corps HttpMessage sous la forme de paires clé/valeur codées par l'URL. Donc, il suffit de supprimer la fonction HttpUtility.UrlEncode:

  var dictionary = new Dictionary<string, string> 
      { 
       { "resource", "https://outlook.office365.com"}, 
       {"client_id","Application ID from azure AD portal" }, 
       {"client_secret","Application key from azure portal" }, 
       {"grant_type","authorization_code" }, 
       {"redirect_uri","https://haw.trustteam.be/" }, 
       { "code","AQABAAIAAAAB..1AiAA"} 
      }; 
      var content = new FormUrlEncodedContent(dictionary); 

En outre, vous pouvez ajouter secret client lame Keys de votre application ad azur. Veuillez vous référer au this document.