【发布时间】:2019-08-21 08:04:02
【问题描述】:
我有一个 Azure 函数,用于从 Azure AD 获取数据,但我想限制谁可以使用该函数,因为它将使用 HTTP 触发器,以便我能够从逻辑应用程序稍后。 因此,由于 HTTP 触发的 Azure Functions 具有公共终结点,我想通过将授权级别设置为 Function 来提高安全性,或者更可取的是使用 Azure AD 服务主体(预先创建)。 进行此更改后,我可以通过将函数放入 URL 来进行调用。
基本网址:
https://something.com/api/function_name
带有令牌的网址:
https://something.com/api/function_name?code=token_here
但是,我的函数需要给出一些输入。
在匿名端点上,您可以像这样扩展基本 URL:
https://something.com/api/function_name/?parameter=value
其中参数是代码所期望的,以及在代码中传递给变量的值。 现在我是这个 HTTP 端点的新手,并通过 URL 传递值。我知道这是作为 JSON 传递的(可能)
但我不明白如何同时进行功能授权和传入参数。 我试过了:
https://something.com/api/function_name/?parameter=value?code=token_here
https://something.com/api/function_name?code=token_here/?parameter=value
有人知道这应该如何工作吗?
另一方面,我还可以将 Platform Features -> Authentication / Authorization 设置为 Azure AD 服务主体。但是,如何更改 URL 以使用该服务主体的 client_id 和 client_secret 进行身份验证?
我实际上更喜欢使用这种方法,因为这样我可以对令牌实施生命周期管理并对其进行轮换以使其更加安全。
我看过这里: Azure function with Azure AD authentication access using JavaScript
而我在 stackoverflow 上找到的大多数其他主题甚至都没有接近。
PS:这个 PS 不需要答案,但我会很感激任何想法。
我正在制作的这个东西是一个结合了(预定)逻辑应用程序的工作流,它触发了Get-Function。 Get-Function 需要以某种方式触发Update-Function。我正在触发Get-Function HTTP,以便我还能够将其作为 API 提供,以使该功能可用于自动化。 (允许在不需要 Azure AD 权限的人的情况下通过 API 调用轮换机密)
然后,更新功能需要轮换(特定)应用程序/服务主体上的机密。
Azure Function 基于 v2 并使用 Powershell Core 作为语言。
【问题讨论】:
-
好吧,我找到了对我的函数 auth 误解的答案:docs.microsoft.com/en-us/azure/azure-functions/… 对于需要传递到代码中的每个新查询,这只是一个简单的 ¶meter=value¶meter=value。剩下的是 azure 广告服务主体身份验证
-
嗨,Marco,那么您想了解如何使用 Azure AD 通过 Platform Features -> Authentication / Authorization 方式来保护您的函数应用程序,对吗?只有通过 Azure 广告身份验证的请求才能调用您的函数应用?
-
嗨,斯坦,最好是。我已经知道如何配置这些设置。就在调用 URL 时,它似乎要求提供我的用户凭据。所以基本上只是想知道我应该如何使用 clientid 和 secret 进行身份验证。
标签: powershell authentication azure-functions powershell-core service-principal