[英]Calling an Azure Function with authentication from a Logic App using Managed Identities
[英]Authenticate from Azure Logic app to Azure Function using Managed Identity
我正在嘗試為邏輯應用程序和 Azure 函數配置安全性。 Azure Functions 有一個 HTTP 觸發器。 到目前為止,我已經完成了以下工作:
當我運行邏輯應用程序時,它顯示 HTTP 操作失敗,因為它未經授權。 誰能告訴我我錯過了什么? 我找到了一些關於如何使用類似方法訪問 KeyVault(例如)的教程,但沒有找到關於 Azure 函數的教程。 我覺得我需要告訴應用程序注冊邏輯應用程序的托管標識具有權限,但我不知道這是否正確,也不知道該怎么做。
首先,要克服當前在邏輯應用程序調用 Azure 函數時遇到的未經授權的錯誤,您需要確保邏輯應用程序正在獲取令牌以正確地對函數進行身份驗證。
我快速嘗試了一個帶有托管標識的邏輯應用程序,就像您的設置一樣,以調用啟用了 Azure AD 身份驗證的 Azure 函數。 以下是要遵循的詳細步驟。
https://<myfunctionapp>.azurewebsites.net/api/simplefunction
Managed Identity
然后添加新參數並選中Audience
復選框
將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.