簡體   English   中英

在 azure api 管理中使用 authentication-managed-identity 標簽時不完整的 bearer token

[英]Incomplete bearer token when using authentication-managed-identity tag in azure api management

我一直在嘗試通過 API azure API Management 公開一個 API,但我不知道自己做錯了什么。 情況是這樣的:

  • 我的 API 將被外部應用程序調用

  • 他們在同一租戶中沒有 Azure 帳戶

  • 我想通過使用訂閱密鑰為我的 API 啟用外部呼叫(因此,為什么我使用 API 管理),但也想用 Azure AD 保護我的實際 API。

  • 我有一個 API,它使用 OAuth2 由 Azure AD 保護並發布到 Windows AppService

  • 我有一個 API 的應用程序注冊,我用它來進行身份驗證(例如,它從 postman 開始工作)應用程序注冊

  • 我已打開托管標識並設置了權限。

  • 我在API管理中添加了API

  • 我添加了authentication-managed-identity入站規則,使用應用程序注冊的 API Id Uri 作為它的資源值。 Api 管理配置

  • 從 APIM 接口測試端點時,我可以成功獲取承載令牌,但我從 API 收到 500 異常,它表示:在承載令牌承載響應中找不到 scope 或角色聲明

  • 這是解碼的承載令牌,它沒有解碼的 scp 屬性承載

我不確定在哪里可以指定 scope。如果我使用完整的 scope uri (api://guid/access.api.management),它會在嘗試獲取不記名令牌時失敗(名為 api 的資源主體:/ /guid/access.api.management 在租戶中找不到)。 我什至嘗試過將 Owner 角色添加到 AppService 的 APIM Identity。

也許我沒有正確使用它,我在使用 Azure 雲和 API 管理方面還很陌生,所以歡迎提出任何建議。 謝謝。

您公開了一個受 Azure 保護的 api,目前您有一個api 應用程序 接下來,您需要創建另一個代表客戶端的應用程序,然后將客戶端應用程序添加到 api 應用程序中。

在此處輸入圖像描述

接下來,go給客戶端申請

  • 在“API 權限”下單擊“添加權限”,然后單擊“我的 API ”選項卡。
  • 找到您的 api 應用程序和 select 相應的 scope。
  • 單擊“添加權限”。
  • 為您的 API 授予管理員許可。

在此處輸入圖像描述

接下來需要使用auth code flow獲取access token,需要先登錄用戶獲取授權碼,然后使用授權碼兌換access token。

1.在瀏覽器中請求授權碼。

https://login.microsoftonline.com/{tenant id}/oauth2/v2.0/authorize?
client_id={client app client id}
&response_type=code
&redirect_uri={redirect_uri}
&response_mode=query
&scope=api://{api app client id}/{scope name}
&state=12345

2.兌換代幣。

在此處輸入圖像描述

解析令牌:

在此處輸入圖像描述

我設法使用客戶端憑據流並將客戶端機密存儲在密鑰保管庫中使其正常工作。

暫無
暫無

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

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