2015-11-11 4 views
1

Je rencontre des problèmes avec une application MVC .net que j'écris. Je l'ai lié à notre AD interne afin que les gens puissent se connecter. Mais je voudrais qu'ils soient en mesure de réinitialiser leurs mots de passe de bureau 365 en utilisant le graphique api pour azure. L'AD interne et le bureau 365 ne sont pas liés et j'ai du mal à trouver quelque chose qui m'aide à construire la connexion à partir de zéro dans le nouveau contrôleur que j'ai ajouté.Problèmes d'accès à l'API Azure Graph

Le code que j'ai dans mon contrôleur est:

public ActionResult ChangePassword() 
    { 
     return View(); 
    } 

    [HttpPost] 
    public async Task<ActionResult> ChangePassword(ChangeEmailPasswordViewModel model) 
    { 
     if (!ModelState.IsValid) 
     { 
      return View(model); 
     } 

     var user = FindUser(User.Identity.GetUserName()); 

     using (var client = new HttpClient()) 
     { 
      var values = new Dictionary<string, string> 
      { 
       { "password", model.NewPassword }, 
       { "forceChangePasswordNextLogin", "false" } 
      }; 

      var content = new FormUrlEncodedContent(values); 

      var url = "https://graph.windows.net/162035a0-31d1-4b3c-a276-491c1dbea2f1/users/" + user.EmailAddress + "?api-version=1.6"; 

      var response = await client.PostAsync(url, content); 

      var responseString = await response.Content.ReadAsStringAsync(); 

      ViewBag.ErrorMessage = responseString; 
     } 

     return View(model); 
    } 

    #region Helpers 

    public UserPrincipal FindUser(string userName) 
    { 
     var principalContext = new PrincipalContext(ContextType.Domain, WebConfigurationManager.AppSettings["adInternalDomainFull"], WebConfigurationManager.AppSettings["adInternalDomain"], WebConfigurationManager.AppSettings["adInternalAdminUser"], WebConfigurationManager.AppSettings["adInternalAdminPassword"]); 
     var userAccount = UserPrincipal.FindByIdentity(principalContext, userName); 

     return userAccount; 
    } 

    #endregion 

Répondre

0

Je ne sais pas ce que ce code est en train de faire, mais vous avez essayé d'utiliser Graph Client Library pour ce faire?