我正在使用由另一個開發人員設定的服務主體進行身份驗證。我正在嘗試針對內部開發的 API 進行身份驗證。當其他開發人員使用 SDK 進行身份驗證時,ASP 正在作業。但是當我嘗試使用 Postman 時,我收到了一個帶有這個錯誤的 401。

問題是我真的不知道要使用哪種資源。我相信客戶端 ID、密碼和范圍是正確的。但我似乎無法找到有關要使用的資源型別的任何資訊。有沒有辦法為內部開發的 API 確定這一點?我已經使用了大量公開可用的。就像測驗一樣,因為我找不到任何資訊。將其留空是行不通的。

uj5u.com熱心網友回復:
假設您在 azure 廣告應用程式注冊中創建了兩個應用程式,一個代表客戶端應用程式,另一個代表 api 應用程式,(或在應用程式注冊中您必須選擇所需的客戶端應用程式),然后您必須使用客戶端應用程式呼叫Web API 應用程式。注意:當您呼叫 web API 時,請確保您發送的是訪問令牌(而不是 Id 令牌)
- 您跟蹤您在 jwt.io 中獲得的令牌。Azure AD 受眾必須與“aud”宣告匹配。Audience 必須等于為應用程式設定的 AppId 或客戶端 ID。在 jwt.io 中檢查 token 的 iss 值并查看登錄 url 的版本。如果是 v2,將 API 的應用程式注冊中的清單 json 設定為 2,因為它可能默認為 2。“accessTokenAcceptedVersion”:2
- 在應用注冊中,如果你暴露的 api 是這樣的:api://xxxx-xxx-xxx,那么你的應用的 appsettings.json 中的客戶端 ID 必須相同。
注意:客戶端 id 可能會根據應用程式進行不同的配置。如果以上不起作用,請嘗試客戶端 ID:而不是 api://
- 您可能需要為您的客戶端應用授予應用權限(這是您自己定義的角色權限,您添加權限時可以在我的APIs中找到)。然后您需要點擊管理員同意按鈕來授予管理員對該權限的同意.




在這里我暴露了范圍>> api://xxx-xxx-xxx/access_as_user。確保使用應用程式配置中包含的門戶中配置的相同范圍。范圍也應該在代碼中包含公開資源的識別符號(應用程式 ID URI)。例如:范圍:“api://xxxx-xxx-xxxx/access_as_user”
In postman Set Authorization header to refer a global variable 'Bearer {{bearerToken}}' and add the authorization data to Request Headers, If you are using postman call back uri , uncheck the authorize using browser for callbackurl in postman configuration.(see enable-azure-ad-authentication| csharpcorner )
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/319021.html
