2017-04-26 87 views
1

我打算使用Azure AD Graph API,但后来在Microsoft文档中注意到有关使用Microsoft Graph API的建议。使用Microsoft Graph更改Azure AD的密码

是否提供了更改用户密码的文档?

string result = Task.Run(async() => { return await GetAccessToken(); }).GetAwaiter().GetResult(); 

var graphserviceClient = new GraphServiceClient(
    new DelegateAuthenticationProvider(
     (requestMessage) => 
     { 
      requestMessage.Headers.Authorization = new AuthenticationHeaderValue("bearer", result); 

      return Task.FromResult(0); 
     })); 

var changePasswordRequest = graphserviceClient.Me.ChangePassword("oldpassword", "newpassword"); 

不过,我不认为这是足够的。有任何文件可用?

回答

2

您可以更新passwordProfile属性来更改当前用户的密码。请参考下面的代码:

await graphClient.Me.Request().UpdateAsync(new User 
{ 
    PasswordProfile = new PasswordProfile 
    { 
     Password = "YourPassword", 
      ForceChangePasswordNextSignIn = false 
    }, 
}); 

而且根据documentation,下列范围之一是需要执行此API:User.ReadWriteUser.ReadWrite.AllDirectory.ReadWrite.All

编辑:documentation已经更新了以下注意事项:

当更新passwordProfile属性,需要以下范围:Directory.AccessAsUser.All

+1

我个人发现,即使授予了所有授权,我仍无法重置密码。只有将公司管理员的服务负责人授予重置密码的权限。至少当时的文档是错误的。 – juunas

+0

AFAIK,只有Azure Active Directory Premium或Basic可以让用户(而不是管理员)自己重置密码,否则只有管理员可以在免费版本中重置用户密码。 –

+0

更新'passwordProfile'属性时,您需要委派'Directory.AccessAsUser.All'作用域。它允许管理员更改其他用户的密码。 –