簡體   English   中英

使用托管標識從 Azure 邏輯應用到 Azure Function 進行身份驗證

[英]Authenticate from Azure Logic app to Azure Function using Managed Identity

我正在嘗試為邏輯應用程序和 Azure 函數配置安全性。 Azure Functions 有一個 HTTP 觸發器。 到目前為止,我已經完成了以下工作:

  1. 創建了具有一些基本功能的 Azure Functions(在請求中寫入查詢到日志)。
  2. 創建了邏輯應用程序(重復觸發器,HTTP 來觸發 Azure 函數)
  3. 測試邏輯應用程序成功調用 Azure 函數
  4. 向邏輯應用程序添加了托管標識
  5. 在 Azure Function App 上啟用 Azure AD 身份驗證/授權,並使用在 Azure AD 中為 Function App 創建應用程序注冊的快速配置。
  6. 在邏輯應用程序的 HTTP 操作中添加了托管標識作為身份驗證方法。

當我運行邏輯應用程序時,它顯示 HTTP 操作失敗,因為它未經授權。 誰能告訴我我錯過了什么? 我找到了一些關於如何使用類似方法訪問 KeyVault(例如)的教程,但沒有找到關於 Azure 函數的教程。 我覺得我需要告訴應用程序注冊邏輯應用程序的托管標識具有權限,但我不知道這是否正確,也不知道該怎么做。

首先,要克服當前在邏輯應用程序調用 Azure 函數時遇到的未經授權的錯誤,您需要確保邏輯應用程序正在獲取令牌以正確地對函數進行身份驗證。

我快速嘗試了一個帶有托管標識的邏輯應用程序,就像您的設置一樣,以調用啟用了 Azure AD 身份驗證的 Azure 函數。 以下是要遵循的詳細步驟。

  1. 在您的邏輯應用程序中添加一個 HTTP 操作,用於調用您的 Azure 函數
  2. 在我的例子中,這是一個簡單的 GET 調用,其 URL 類似於https://<myfunctionapp>.azurewebsites.net/api/simplefunction
  3. 在身份驗證中選擇Managed Identity
  4. 然后添加新參數並選中Audience復選框

    在此處輸入圖像描述

  5. Audience參數的值更改為函數應用的 Azure AD 應用注冊的 APP ID URI。 在我的例子中,這個值看起來像https://<myazureadtenant>.onmicrosoft.com/GUID

    您可以從 Azure 門戶 > Azure AD > 應用注冊 > 注冊您的函數應用 > 設置 > 屬性中找到此應用程序 ID URI 值

    在此處輸入圖像描述

此時,你應該能夠測試你的邏輯應用程序,並且至少可以正常調用 Azure Functions(除非你的 Azure Functions 僅限於某些調用者或需要特定權限,稍后會詳細介紹。)

以下是完整的 HTTP 操作在我的案例中的樣子。

在此處輸入圖像描述

接下來,一旦從邏輯應用程序(使用托管標識)到您的 Azure 函數的基本調用得到正確的身份驗證,問題是任何應用程序是否應該能夠調用您的 Azure 函數,或者是否應該只允許具有特定權限的某些調用者。

我在這篇 SO 帖子中用 2 種方法詳細回答了這部分 - 有沒有辦法保護只能從特定 Azure 邏輯應用程序調用的 Azure 函數? . 該答案中的第二種方法非常明確,如果您的功能需要,您甚至可以為不同類型的調用者創建多個不同的應用程序角色。

暫無
暫無

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

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