Azure AD使用图形API更改临时密码

时间:2017-01-23 15:36:56

标签: azure-active-directory azure-ad-graph-api adal4j

我正在尝试使用Graph API更改Azure AD中新创建的用户的密码。我可以通过使用标题中的用户访问令牌调用图表api来为具有永久密码(密码已使用Azure UI更改一次)的用户完成此操作,如下所示:

RecyclerView

但是,我无法为具有Azure提供的临时密码的新创建用户实现相同的API调用。这是因为我无法使用ADAL4J API获取此用户的访问令牌,该API返回错误" AADSTS50055:强制更改密码。"因此,如果我无法获取新用户的令牌,我该如何更改密码?

1 个答案:

答案 0 :(得分:0)

我假设您使用资源所有者密码凭据流获取了访问令牌。

当我们使用Azure AD Graph REST创建用户时,我们可以在用户首次登录时禁用更改密码。以下是供您参考的示例:

POST:https://graph.windows.net/xxxx.onmicrosoft.com/users?api-version=1.6
authorization: bearer {access_token}
content-type: application/json


{
  "accountEnabled": true,
  "displayName": "User7",
  "mailNickname": "User7",
  "passwordProfile": {
    "password": "Test1234",
    "forceChangePasswordNextLogin": false
  },
  "userPrincipalName": "User7@xxxx.onmicrosoft.com"
}

然后我们可以使用资源所有者密码凭据流来获取此用户的访问令牌,如下所示(如果直接发送,请确保参数是URL编码):

POST:https://login.microsoftonline.com/xxxx.onmicrosoft.com/oauth2/token
resource=https%3A%2F%2Fgraph.windows.net&client_id={clientId}&grant_type=password&username={userName}&password=Test1234&client_secret={secret}

然后我们可以使用上面的访问令牌更新用户的密码。此Azure AD Graph REST需要授予权限Directory.AccessAsUser.All

更新

用户首次将forceChangePasswordNextLogin设置为true时,必须在登录Azure AD时更改密码(无论是由您开发的应用程序还是使用Azure门户网站)。这是一个供您参考的图: enter image description here

UPDATE2

在这种情况下,无需重定向自己,Azure AD将为我们处理所有这些。当用户第一次尝试登录您的应用时,在用户输入正确的用户名/密码后,用户需要更改密码。用户更改密码后,会自动重定向到您的应用。