我正在尝试在链接上使用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"}
答案 0 :(得分:0)
我还没有使用过Java API,但我可以告诉你两个问题的核心:
您需要更改应用程序而不是显示浏览器窗口,以便用户可以重置其密码。如果您只想按原样测试代码,则可以打开一个新的Incognito / private / InPrivate窗口并登录到例如portal.azure.com与用户。这样可以确保他们有一个有效的密码。
但是我会建议不要使用那个登录流程,因为这样的潜在问题。
您收到错误的原因是用户需要设置新密码,但您使用的流程不支持该方案。它也不支持用户帐户启用了MFA /是Microsoft帐户等的情况。
顺便说一句,如果这个应用程序不是由用户使用,而是按原样运行,我建议将它作为一个守护程序,在必要的API上具有应用程序权限,然后使用客户端凭据流进行身份验证。由于应用程序具有所需的权限,因此无需用户帐户。