2017-05-06 96 views
0

我想鏈路使用Java代碼提到驗證用戶:http://www.nexttutorial.com/faq/azureAD/1/Azure-active-directory-graph-api-user-authentication-in-java - 但我得到以下錯誤:無法使用Azure中的Active Directory

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
我沒有使用過的Java API

,但我可以告訴你兩件事是問題的核心:

  1. 用戶的密碼已經過期
  2. 您正在使用資源所有者密碼格蘭特流

您需要將應用程序更改爲顯示瀏覽器窗口,以便用戶可以重置密碼。如果您只想按原樣測試代碼,您可以打開一個新的隱身/私密/ InPrivate窗口並登錄到例如portal.azure.com與用戶。這將允許你確保他們有一個工作密碼。

但我會建議不要使用該簽名流程,因爲像這樣的潛在問題。

您得到該錯誤的原因是用戶需要設置新密碼,但您使用的流程無法支持該場景。它也不支持用戶帳戶啓用MFA /是Microsoft帳戶等情況。

順便說一句,如果這個應用程序不打算被用戶使用,但只是運行,我會建議將它作爲具有必要API的應用程序權限的守護程序,然後使用客戶端憑證流進行身份驗證。由於該應用程序具有所需的權限,因此不需要用戶帳戶。