私が書いている MVC .net アプリケーションで問題が発生しています。ユーザーがログインできるように、内部 AD にリンクしています。しかし、azure のグラフ API を使用して Office 365 のパスワードをリセットできるようにしたいと考えています。内部 AD と Office 365 がリンクされておらず、追加した新しいコントローラーでゼロから接続を構築するのに役立つものを見つけるのに苦労しています。
コントローラーにあるコードは次のとおりです。
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