簡體   English   中英

Microsoft Graph API密碼重置僅接受空密碼

[英]Microsoft Graph API Password Reset Only Accepts Null password

我正在嘗試通過Graph API(特別是graph.windows.net,盡管使用graph.microsoft.com也會發生相同的行為)來重置另一個用戶的密碼。

我相信所有安全措施都已正確設置。 應用程序注冊具有Directory.ReadWrite.All權限,並且服務主體是全局管理員。 沒有關於權限不足的錯誤,但是每當我嘗試在密碼配置文件中提供密碼時,都會出現錯誤。

將補丁請求

https://graph.windows.net/ {tenant_id} / users / {userPrincipalName}?api-version = 1.6

以下身體給了我204的回應。

{ 
    "passwordProfile": {
        "password": null,
        "forceChangePasswordNextSignIn": true 
    }
}

但是,密碼為“ P @ ssword1”或任何其他有效密碼的同一請求將返回400錯誤請求,並顯示消息“一個或多個屬性包含無效值”。

有人遇到過這樣的事情嗎? 這些是從本地AD同步的帳戶,但是密碼重置已在Azure中啟用,您可以在AAD中手動重置密碼。 任何幫助或建議,我們將不勝感激。

根據您的描述,我假設您想通過Graph API更新用戶密碼。

根據本文檔 ,當我們更新passwordProfile屬性時,需要以下權限: Directory.AccessAsUser.All

根據我的測試,我們可以使用以下步驟來修改某人的密碼:

  1. 通過遵循此文檔來授予權限。

  2. 檢查配置文件中的密碼是否滿足passwordPolicies屬性指定的最低要求。

  3. 使用以下請求更新某人的密碼。

請求網址:

PATCH /users/{id | userPrincipalName}

和請求正文:

{ "passwordProfile": { "forceChangePasswordNextSignIn": true, "password": "P@assword1" } }

如果成功,此請求將返回204 No Content響應代碼。

您輸入的URL錯誤, graph.windows.net是舊版Azure AD Graph API。 Microsoft Graph API位於以下位置: graph.microsoft.com 盡管這些API在功能上相似,但它們所調用的模式卻大不相同。

如kikang所述,要更改用戶密碼,您需要請求Directory.AccessAsUser.All范圍。 有一些重要的警告與此范圍有關:

  1. 這是一個委托范圍,因此只有在使用授權碼或隱式OAuth流時才可以請求它。 不能與客戶端憑據一起使用。

  2. 在用戶同意Director.AccessAsUser.All ,您必須首先從用戶的AAD租戶/實例的管理員處獲得管理員同意。

一旦獲得適當范圍的同意,就需要向/user資源發出PATCH

您的通話將類似於以下內容:

PATCH https://graph.microsoft.com/v1.0/me
Content-type: application/json

{
  "passwordProfile": {
    "forceChangePasswordNextSignIn": true,
    "password": "A-Strong-Password"
  }
}

事實證明,這是在他們的環境中如何設置AD同步的問題。 顯然,與Azure AD同步的聯合域鎖定了通過Graph API重置密碼的功能,但錯誤消息並未告訴您其權限問題。

它在不受支持的操作下概述,我的問題是不了解完整的AD環境設置: https : //docs.microsoft.com/zh-cn/azure/active-directory/authentication/concept-sspr-writeback

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM