我有一个Azure函数,正在使用该函数从Azure AD中获取数据,但是我想限制谁可以使用该函数,因为它将使用HTTP触发器,这样我就可以从Logic App后来问世。 因此,由于HTTP触发的Azure Functions具有公共终结点,因此我想通过将授权级别设置为Function来提高安全性,或者更可取的是使用Azure AD服务主体(预先创建)。 进行更改后,我可以通过将函数放入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
有人知道这应该如何工作吗?
另一方面,我也可以将Platform Features -> Authentication / Authorization
设置为Azure AD服务主体。但是,如何使用该服务主体的client_id
和client_secret
更改URL以进行身份验证?
我实际上更喜欢使用这种方法,因为这样我就可以对令牌实施生命周期管理并对其进行轮换以使其更加安全。
我看过这里: Azure function with Azure AD authentication access using JavaScript
我在stackoverflow上发现的大多数其他主题甚至都没有结束。
PS:本PS不需要答案,但我会很感激。
我正在构想的事情是由(预定的)逻辑应用程序触发的Get-Function
组合的工作流程。 Get-Function
将在何处需要触发Update-Function
。而且我正在触发Get-Function
HTTP,因此我也能够将其作为API提供,以使该功能可用于自动化。 (以允许通过API调用旋转机密,而无需那些需要Azure AD权限的人)
然后,更新功能将需要旋转(特定)应用程序/服务主体上的机密。
Azure Function基于v2,并使用Powershell Core作为语言。
答案 0 :(得分:0)
如果您想使用平台功能->身份验证/授权(简易身份验证)来保护您的匿名http触发功能,则可以按照以下步骤操作:
3。提出从您的Azure AD获取访问令牌的请求,以便我们可以调用您的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->
正如您在响应中看到的那样,您可以获得访问令牌,因此可以在http请求标头“ Authorization”参数中使用此令牌来调用启用了简单身份验证的http触发函数,所有没有正确Authorization标头的请求都将被阻止:
如果对您有帮助,请标记我。