2017-02-24 2 views
0

Wir hosten derzeit zwei ähnliche Webapps in Azure, eine in der internationalen Cloud, eine in der deutschen. Wir verwenden die Graph-API, um das anfängliche Passwort eines Benutzers zu ändern. Dies funktioniert für die internationale Version, scheitert aber, wenn man dasselbe für die deutsche Version versucht. Sehen Sie die Methode unten, die den Code für die deutsche App zeigt. Die internationale Version hat offensichtlich andere IDs, Schlüssel und URLs, verwendet aber dieselbe Logik.Azure Deutschland: Call to changePassword funktioniert nicht

Debuggen des Codes, ich bekomme ein Token und ich kann das Token für die POST-Methode verwenden. Dies ist die Antwort (nach dem Aufruf client.PostAsync):

Id = 42, Status = RanToCompletion, Method = "{null}", Ergebnis = „Statuscode 500, ReasonPhrase: 'Internal Server Error' Version: 1.1, Inhalt: System.Net.Http.StreamContent, Headers: \ r \ n {\ r \ n
OCP-aad-Diagnose-Server-Name: 5gghBUs/j/tLLA4x7srNaYCSuNTD7zpqDaqBOfa330o = \ r \ n
request-id: 2258910e-3b51-47a7-bd81-90eb46a31cb0 \ r \ n
Client-request-id: {myClientId} \ r \ n
}“(...)

Ich habe jede ID, Schlüssel und Url verzehnfacht. Was vermisse ich? (Client-ID, Benutzername usw. sind anonymisiert)

private async static Task<string> ChangePasswordDE() 
    { 
     try 
     { 

      string clientId = "{myClientID }"; 
      string authority = "https://login.microsoftonline.de/{TenantID}/"; 

      string userName = "[email protected]"; 
      string oldPassword = "thisIsOld1234"; 
      string newPassword = "thisIsNew5678"; 


      var ctx = new AuthenticationContext(authority, false); 
      var pwCred = new UserPasswordCredential(userName, oldPassword); 
      var result = ctx.AcquireTokenAsync("https://graph.cloudapi.de/", clientId, pwCred).Result; 

      var client = new HttpClient(); 
      client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", result.AccessToken); 


      var requestUri = "https://graph.cloudapi.de/me/changePassword?api-version=1.6"; 

      object newPwd = new { currentPassword = oldPassword, newPassword = newPassword }; 

      var body = JsonConvert.SerializeObject(newPwd); 
      Uri uri = new Uri(requestUri); 
      StringContent content = new StringContent(body, System.Text.Encoding.UTF8, "application/json"); 
      Console.WriteLine("Post Async"); 
      var response = client.PostAsync(uri, content).Result; 

      ctx.TokenCache.Clear(); 

      if (response.IsSuccessStatusCode) 
      { 
       Console.WriteLine("Worked!"); 
       return "OK"; 

      } 
      else 
      { 
       Console.WriteLine(response.ReasonPhrase); 
       Console.WriteLine("Did not work!"); 
       return "Error"; 
      } 
     } 
     catch (Exception ex) 
     { 

      Console.WriteLine(ex.InnerException); 
      return ex.InnerException.ToString(); 
     } 

    } 

Antwort

0

Wir haben Kontakt mit Microsoft aufgenommen. Azure Deutschland implementiert die Graph-API, aber seit dem 1. März 2017 funktionieren noch nicht alle Funktionen. ChangePassword, das oben verwendet wird, ist einer von ihnen.