2017-06-22 78 views
0

我正嘗試使用圖形API來更改B2C租戶上當前登錄用戶的用戶。通過Azure AD B2C圖形API更改登錄用戶的密碼

的請求被髮布到:

https://graph.windows.net/me/changePassword?api-version=1.6 

所提供的JSON是按以下格式:

{"currentPassword":"[currentpassword]","newPassword":"[newpassword]"} 

不幸的是我不斷收到以下錯誤,我不知道爲什麼(或者說,我不知道爲什麼使用'我'別名會有問題)。我也嘗試在發佈請求的地方包括租戶名稱,但這沒有什麼區別。

未找到段「me」的資源。

我設法通過重置來更改密碼。但是,問題是可以在不提供當前密碼的情況下更改密碼。理想情況下,我希望用戶必須輸入此密碼作爲更新密碼過程的一部分。事實證明,缺少的'我'問題可能是由於缺少權限。

我試着添加'訪問目錄作爲登錄用戶'權限作爲應用程序的委託權限。我得到這個頁面:

enter image description here

請注意,我也有經典的門戶拒絕,如果這兩個設置都將更改保存到設置的登錄網址http://localhost/testapp/和應用程序ID URI設置爲https://patrickscorp.onmicrosoft.com/testapp沒有設置。

在'其他應用程序的權限'下,我點擊'添加應用程序',然後選擇'Windows Azure Active Directory'。然後我確定選擇了'作爲登錄用戶的訪問目錄'。

enter image description here

然而,拯救導致下面的錯誤出現:

Screenshot of error

點擊「詳細信息」並不能幫助 - 它只是說,如果問題仍然存在聯繫 支持

如果我必須走下重置路線,那麼有沒有一種方法可以獲取用戶提供的密碼並進行驗證?

+0

你沒有解釋你如何獲得令牌。您是否從Azure AD B2C身份驗證端點獲取了它?如果是這樣,那麼不幸的是,截至今天,您無法使用該令牌調用Azure AD B2C圖形API。這意味着你也不能使用/ me端點。 –

+0

謝謝你的迴應。你有什麼想法,如果這將是可能的?我注意到,從所提出的改進來看,這是一個在不斷提出要求的情況下一直存在很長一段時間的遺漏。目前我唯一的選擇是允許用戶在不提供當前密碼的情況下重置密碼。這意味着任何有權訪問PC的人都可以在沒有任何事情的情況下更改它,即使他們不是有問題的用戶。以編程方式登錄(以驗證密碼)也不是在Web應用程序的上下文中看到的選項。 – PatrickS

+0

爲了讓用戶重置他/她的密碼,他們需要訪問用戶的電子郵件,因爲驗證電子郵件是作爲密碼重置流發送的。因此,這不僅僅是訪問用戶已登錄Azure AD B2C應用程序的PC的問題。 – Saca

回答

0

調用該Azure AD Graph需要在路徑中的tenantName,像這樣:

https://graph.windows.net/mytenant.onmicrosoft.com/me/changePassword?api-version=1.6 

這是與Microsoft Graph,因爲它從用戶推斷它的令牌,被稱爲像不需要它對比所以:

https://graph.microsoft.com/v1.0/me/changePassword 

不過需要注意的是,此時在Azure AD圖形建議Azure的AD B2C是很重要的。

編輯: 由於每Azure AD Graph Reference for Change Password

調用changePassword行動爲登錄的用戶更改自己的密碼。

注意:此操作只能在登錄用戶上調用。

如果你想改變一些其他用戶的密碼,你就需要使用Reset Password

https://graph.windows.net/mytenant.onmicrosoft.com/users/{user_id}?api-version=1.6 
+0

這就是我開始做的事情,但它沒有起作用,我看到的一些例子似乎排除了租戶的名字,這也是我嘗試這種做法的原因,無論如何,租戶名是否包含在內:我仍然收到錯誤 – PatrickS

+1

您是否正在使用客戶端憑證流?這會導致該錯誤。當您使用客戶端憑證時沒有「我」(並因此認證爲應用程序而不是在這種情況下,您應該通過/ objectId/changePassword明確地指定用戶 – Saca

+0

我嘗試使用/ objectId/changePassword路由,但它返回了403禁止(整個URL的格式爲https:/ /graph.windows.net/ /users/ /changePassword?api-version=1.6)。我是否需要在某處修改權限? – PatrickS