gpt4 book ai didi

powershell - 如何使用函数身份验证或 Azure AD 服务主体对 Azure 函数进行身份验证

转载 作者:行者123 更新时间:2023-12-02 19:53:38 25 4
gpt4 key购买 nike

我有一个 Azure 函数,我用它从 Azure AD 获取数据,但我想限制谁可以使用该函数,因为它将使用 HTTP 触发器,这样我就可以从逻辑应用程序稍后在路上。因此,由于 HTTP 触发的 Azure Functions 有一个公共(public)端点,我想通过将授权级别设置为 Function 来提高安全性,或者更优选使用 Azure AD 服务主体(预先创建)。进行此更改后,我可以通过将函数放入 URL 来进行调用。

基本网址:https://something.com/api/function_name

带有 token 的 URL: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_idclient_secret 进行身份验证?我实际上更喜欢使用这种方法,因为这样我就可以对 token 实现生命周期管理并轮换它以使其更加安全。

我看过这里: Azure function with Azure AD authentication access using JavaScript

我在 stackoverflow 上发现的大多数其他主题甚至都没有接近。

PS:此 PS 不需要答案,但如果有任何想法,我将不胜感激。我正在编造的这个东西是一个工作流,它结合了一个触发 Get-Function 的(预定)逻辑应用程序。 Get-Function 需要以某种方式触发 Update-Function。我正在触发 Get-Function HTTP,这样我也可以将它作为 API 提供,使该功能可用于自动化。 (允许通过 API 调用轮换 secret ,而无需那些需要 Azure AD 权限的人)然后,更新功能需要轮换(特定)应用程序/服务主体的 secret 。Azure Functions 基于 v2 并使用 Powershell Core 作为语言。

最佳答案

如果您想使用平台功能->认证/授权(Easy Auth)来保护您的匿名http触发功能,您可以按照以下步骤操作:

  1. 启用身份验证/授权(Easy Auth),使用 Azure AD 快速模式:

1

点击保存。完成该过程后,请记下您的功能广告应用的 client_id,我们稍后会用到它。

2

  1. 创建 Azure AD 应用

3

4

为其创建客户端密码,记下客户端密码值和新的 Azure AD 应用程序 ID:

5

6

  1. 请求从您的 Azure AD 获取访问 token ,以便我们可以调用您的 http 触发函数:
Request URL:
POST https://login.microsoftonline.com/<-your tenant id/name->/oauth2/token

Request Header:
Content-Type: application/x-www-form-urlencoded

Request Body:
grant_type=client_credentials
&resource=<-function App ID->
&client_id=<-new Azure AD App ID->
&client_secret=<-client secret of new Azure AD App ID->

如下:

7

正如您在响应中看到的,您可以获得一个访问 token ,因此在 http 请求 header Authorization 参数中使用此 token 来调用您的 http 触发函数,该函数启用了简单的身份验证,所有请求都没有正确的授权 header 将被阻止:

8

如果这对你有帮助,请标记我。

关于powershell - 如何使用函数身份验证或 Azure AD 服务主体对 Azure 函数进行身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57587054/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com