Powershell 如何使用函数身份验证或Azure AD服务主体对Azure函数进行身份验证
我有一个Azure函数,我正在使用它从Azure AD获取数据,但我想限制谁可以使用该函数,因为它将使用HTTP触发器,以便稍后我能够从逻辑应用程序调用该函数。 因此,由于HTTP触发的Azure函数有一个公共端点,我希望通过将授权级别设置为Function来提高安全性,或者更可取的做法是使用Azure AD服务主体(预先创建)。 在进行此更改时,我可以通过将函数放入URL来进行调用 基本URL:Powershell 如何使用函数身份验证或Azure AD服务主体对Azure函数进行身份验证,powershell,authentication,azure-functions,powershell-core,service-principal,Powershell,Authentication,Azure Functions,Powershell Core,Service Principal,我有一个Azure函数,我正在使用它从Azure AD获取数据,但我想限制谁可以使用该函数,因为它将使用HTTP触发器,以便稍后我能够从逻辑应用程序调用该函数。 因此,由于HTTP触发的Azure函数有一个公共端点,我希望通过将授权级别设置为Function来提高安全性,或者更可取的做法是使用Azure AD服务主体(预先创建)。 在进行此更改时,我可以通过将函数放入URL来进行调用 基本URL: https://something.com/api/function_name 带有令牌的URL:
https://something.com/api/function_name
带有令牌的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
有人知道这是怎么回事吗
另一方面,我还可以将平台功能->身份验证/授权
设置为Azure广告服务主体。但是,如何使用该服务主体的client\u id
和client\u secret
更改URL以进行身份验证?
实际上,我更喜欢使用这种方法,因为这样我就可以对令牌实施生命周期管理,并对其进行轮换,以使其更加安全
我在这里看过:
而我在stackoverflow上发现的大多数其他主题甚至都没有接近
PS:这个PS不需要回答,但我很感激你的任何想法。
我正在炮制的这个东西是一个工作流,它结合了一个(计划的)逻辑应用程序,触发一个Get函数
。其中,Get函数
需要触发一个Update函数
。我正在使Get函数
HTTP被触发,这样我也可以将它作为API提供,使这个函数可以用于自动化。(允许通过API调用旋转机密,而无需那些需要Azure AD权限的人)
然后,更新功能需要在(特定)应用程序/服务主体上轮换机密。
Azure函数基于v2,并使用Powershell Core作为语言。如果您想使用平台功能->身份验证/授权(Easy Auth)来保护匿名http触发函数,可以执行以下步骤:
请求URL:
邮递https://login.microsoftonline.com//oauth2/token
请求标头:
内容类型:application/x-www-form-urlencoded
请求机构:
授予\类型=客户端\凭据
&资源=
&客户识别码=
&客户机密=
如下:
正如您在响应中所看到的,您可以获得一个访问令牌,因此在http请求头Authorization
param中使用该令牌来调用启用easy auth的http触发函数,所有没有正确授权头的请求都将被阻止:
如果这对您有帮助,请标记我。我找到了函数auth误解的答案:对于需要传递到代码中的每个新查询,它只是一个简单的¶meter=value¶meter=value。剩下的是azure ad服务主体身份验证Hi,Marco,所以你想知道如何使用azure ad通过平台功能->身份验证/授权方式来保护你的功能应用,对吗?只有通过Azure ad Auth的请求才能调用你的函数应用程序?你好,斯坦,最好是。我已经知道如何配置这些设置。就在调用URL时,它似乎在询问我的用户凭据。所以基本上只是想知道我应该如何使用clientid&secret进行身份验证。嘿,斯坦,这至少可以部分地让我达到目的。我已经完成了第一步和第二步。3让我走得更远:)那个请求URL就是我要找的。你从哪儿弄来的?另外,在邮递员之外,我将如何执行此令牌请求?这是所有的手动测试,我会看到肯定。所以谢谢你!你是否也知道我是如何通过编程来实现这一点的?我假设它基本上是URL的某种格式?请注意,这些都是在powershell中编写的。像这样吗?:嗨@Marco,这是Azure广告的OAuth 2.0服务对服务呼叫验证流,这是关于它的官方文档:,如果你有任何不清楚的地方,请随时告诉我:)谢谢!你让我大获全胜,我想我一定能想出编程访问的部分。:)欢迎希望你有一个愉快的一天!这很好,但我最终得到了401。我不清楚为应用程序
testAuth
获取令牌的客户端如何访问由应用程序stanfuntest001保护的资源。我不认为这两者之间有任何关系,我相信这就是401错误的原因。你错过什么了吗?还是我遗漏了什么?
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->