none
Azure Cloud Deutschland: changePassword Aufruf funktioniert nicht

    Frage

  • Aktuell hosten wir zwei webapps in Azure. Eine in der deutschen Cloud, eine in der "normalen". Wir benutzen die Graph-API um das initiale Passwort eines Users zu ändern. Für die "normale" Cloud funktioniert das ohne Probleme, aber bei der deutschen bekommen wir immer einen 500 er Fehler "Interner Server Error". Weiter unten der Code für den Aufruf in die deutsche Cloud. (Selbstverständlich benutzen wir für die deutsche Cloud angepasste Ids etc. Die Logik bleibt dennoch die gleiche.)

    private async static Task<string> ChangePasswordDE()
            {
                try
                {
                                  
                    string clientId = "{myClientID }";
                    string authority = "https://login.microsoftonline.de/{TenantID}/";
                    string userName = "Name@Tenant.onmicrosoft.de";
                    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();
                }
            }

    Sonntag, 26. Februar 2017 15:37

Antworten

Alle Antworten