无法使用Azure Active Directory对用户进行身份验证

时间:2017-05-06 04:22:39

标签: java azure azure-active-directory

我正在尝试在链接上使用java代码:http://www.nexttutorial.com/faq/azureAD/1/Azure-active-directory-graph-api-user-authentication-in-java - 但我得到以下错误:

java.util.concurrent.ExecutionException: com.microsoft.aad.adal4j.AuthenticationException: {"error_description":"AADSTS50055: Force Change Password.\r\nTrace ID: 7596cf92-f3d6-4baf-a0c9-d166a92d1500\r\nCorrelation ID: 8cccb074-4ae4-4c9b-932b-1f4ddcb514cb\r\nTimestamp: 2017-05-05 08:20:28Z","error":"user_password_expired"}

1 个答案:

答案 0 :(得分:0)

我还没有使用过Java API,但我可以告诉你两个问题的核心:

  1. 用户密码已过期
  2. 您正在使用资源所有者密码授予流程
  3. 您需要更改应用程序而不是显示浏览器窗口,以便用户可以重置其密码。如果您只想按原样测试代码,则可以打开一个新的Incognito / private / InPrivate窗口并登录到例如portal.azure.com与用户。这样可以确保他们有一个有效的密码。

    但是我会建议不要使用那个登录流程,因为这样的潜在问题。

    您收到错误的原因是用户需要设置新密码,但您使用的流程不支持该方案。它也不支持用户帐户启用了MFA /是Microsoft帐户等的情况。

    顺便说一句,如果这个应用程序不是由用户使用,而是按原样运行,我建议将它作为一个守护程序,在必要的API上具有应用程序权限,然后使用客户端凭据流进行身份验证。由于应用程序具有所需的权限,因此无需用户帐户。