簡體   English   中英

Azure AD OAuth 中的“資源所有者密碼憑據授予”問題

[英]Issue with "Resource owner password credentials grant" in Azure AD OAuth

無法通過直接傳遞用戶名和密碼來獲取訪問令牌

端點: https ://login.microsoftonline.com/ {tenant_id}/oauth2/token

grant_type: password
client_id: APPLICATION_ID
resource: https://graph.microsoft.com/.default
username: <username@microsoft.com>
password: <password>
Scope : openid

應用程序在https://apps.dev.microsoft.com/中創建

獲取無效授權錯誤:

{
"error": "invalid_grant",
"error_description": "AADSTS70002: Error validating credentials. AADSTS50126: Invalid username or password\r\nTrace ID: 1ff96bc3-29c8-48f1-b7cc-f77c01525500\r\nCorrelation ID: 9821fdf5-25dc-4b07-84b3-f084194ea123\r\nTimestamp: 2018-09-14 20:04:01Z",
"error_codes": [
    70002,
    50126
],
"timestamp": "2018-09-14 20:04:01Z",
"trace_id": "1ff96bc3-29c8-48f1-b7cc-f77c01525500",
"correlation_id": "9821fdf5-25dc-4b07-84b3-f084194ea123"
}

令牌響應

您似乎沒有授予您的應用程序的權限。 確保將所有用戶添加到應用程序並確保您具有正確的 web.config 參數。

此外,請確保用於連接托管域的用戶名和密碼正確。 在使用不正確的用戶之前,我已經收到此錯誤。 普通的 azure 全局管理員用戶可能無法進行身份驗證。 您需要確保您使用的是 CSP 管理員用戶。

更新

看起來這里有不止一個問題在起作用。

  1. 您正在使用 Azure AD 令牌端點,但錯誤地向 Azure AD B2C 注冊了您的應用程序(所以案例 2 根據我的原始答案)。

  2. 現在,在更正那個之后,您應該為這個在 Azure AD 中注冊的新應用程序使用 clientid 和客戶端密碼。

  3. 確保您已在 Azure AD 中的“所需權限”下為您的應用程序添加 Microsoft Graph 權限,並在選擇適當權限的最后,確保您按下“授予權限”按鈕以表示同意。

  4. 查看您收到的錯誤消息和代碼(invalid_grant 和“AADSTS70002:驗證憑據時出錯。AADSTS50126”),我用我自己的測試應用程序從 Postman 中嘗試了與您完全一樣的 ROPC,並嘗試了多種不同的傳遞錯誤輸入的組合,但是您看到的確切錯誤代碼僅出現在我的密碼或用戶名不正確的情況下(如消息所述:))。 在所有其他情況下,錯誤代碼將有所不同。

在此處輸入圖像描述

因此,對於用戶名 - 確保提供完全限定名稱,例如 rohitsaigal@mydomain.onmicrosoft.com

密碼 - 很明顯。

根據上面的說明再試一次,讓我們看看它是如何進行的。

原始答案

應用程序在https://apps.dev.microsoft.com/中創建

這意味着您的應用程序已向 Azure AD B2C 注冊。

您注冊應用程序的位置與您使用的令牌端點不匹配。

案例 1 - 您希望使用 Azure AD B2C

資源所有者密碼憑據授予仍處於公共預覽階段,您需要按照 Microsoft 在此處提供的說明進行操作 -

在 Azure AD B2C 中配置資源所有者密碼憑據流

您將點擊以獲取令牌的端點也將與您提到的端點不同。

https://yourtenant.b2clogin.com/<yourtenant.onmicrosoft.com>/oauth2/v2.0/token?p=B2C_1_ROPC_Auth

案例 2 - 您希望使用 Azure AD B2B

在這種情況下,您使用正確的端點來獲取令牌,但是您錯誤地使用 Azure AD B2C 注冊了您的應用程序,您需要更改它並從 Azure 門戶注冊您的應用程序。

此處的說明和詳細信息 - 將應用程序與 Azure Active Directory 集成

以防萬一您需要了解 Azure AD B2B 與/s B2C 之間的差異 - 請查看此 SO Post

這是另一個有用的SO 帖子,提供有關通過 Azure 門戶 v/s https://apps.dev.microsoft.com注冊應用程序的信息(新應用程序注冊門戶)

這適用於 https://docs.microsoft.com/en-us/azure/active-directory-b2c/add-ropc-policy?tabs=app-reg-ga&pivots=b2c-user-flow

但請記住,存在以下限制:

  • 密碼過期或需要更改時不能使用。
  • 不支持 MFA
  • 不支持社交登錄

暫無
暫無

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

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