gpt4 book ai didi

azure - InvalidAuthenticationTokenAudience - 逻辑应用的身份验证

转载 作者:行者123 更新时间:2023-12-03 01:14:27 27 4
gpt4 key购买 nike

经过几天的努力,我会尝试在这里寻求一些帮助。我有几个逻辑应用程序 - 有些带有 HTTP 触发器,有些带有 SQL 触发器(创建项目时、修改项目时)。它们每隔 X 小时运行一次,但客户要求能够通过在其自定义 Web 应用程序中单击按钮来手动运行逻辑应用程序。

为了能够运行逻辑应用程序(调用触发器),我尝试获取不记名 token 以进行授权并运行逻辑应用程序。我遵循了所有这些步骤https://www.serverlessnotes.com/docs/securing-azure-logic-app-http-triggers-with-azure-ad# 。简而言之,我创建了两个应用程序注册(客户端和服务),包括角色应用程序和 API 权限。然后,我在授权下的 LogicApp 中添加了发行者 ( https://login.windows.net/{tenantid}/oauth2/token/ ) 和受众(服务应用程序注册的 ClientId) - 这是链接中的第 5 步。

但我发现我在这里缺少一些理解。因为现在当我测试它时(如链接中所述),出现以下错误。

首先获取 token :

enter image description here

然后尝试使用该 token 执行 LogicApp 触发器:

enter image description here

已为错误的受众或资源“XXX”获取访问 token 。它应与允许的受众之一完全匹配“https://management.core.windows.net/”、“https://management.core.windows.net”、“https://management.azure.com/” ','https://management.azure.com'。

POST请求的链接是LogicApp的触发器,如下所示:<强> https://management.azure.com/subscriptions/{id}/resourceGroups/{ResourceGroup}/providers/Microsoft.Logic/workflows/{LogicAppName}/triggers/When_an_item_is_created/run?api-version=2016-06-01

我知道此链接有效,因为如果我尝试输入我的个人数据(电子邮件和密码),它就会成功。但为了避免代码中出现用户名和密码数据,我想用这个 token 来解决这个问题。但我不知道需要在哪里修复它以便受众匹配 - 在逻辑应用程序中还是在那些应用程序注册中?我将非常感谢任何帮助。

最佳答案

我尝试在我的环境中重现相同的结果并得到以下结果:

我注册了与您相同的 Azure AD 应用程序,并添加了 API 权限,如下所示:

enter image description here

现在我通过 Postman 使用以下参数生成了访问 token :

GET https://login.microsoftonline.com/<tenantID>/oauth2/token
grant_type:client_credentials
client_id:<client appID>
client_secret: <secret>
resource: api://<service appID>

回应:

enter image description here

当我使用上述 token 执行 LogicApp 触发器时,我得到了相同的错误,如下所示:

POST https://management.azure.com/subscriptions/<subID>/resourceGroups/<ResourceGroup>/providers/Microsoft.Logic/workflows/<LogicAppName>/triggers/manual/run?api-version=2016-06-01

回应:

enter image description here

解决该错误,您需要通过传递不带 SAS key 的逻辑应用 URL来更改请求 URL。

当我像这样更改请求 URL 时,LogicApp 成功触发,响应如下:

POST <Logic Apps URL without SAS key>

回应:

enter image description here

如果您想使用管理 REST API 触发逻辑应用,则需要使用不同的资源生成访问 token ,如下所示:

GET https://login.microsoftonline.com/<tenantID>/oauth2/token
grant_type:client_credentials
client_id:<client appID>
client_secret: <secret>
resource: https://management.azure.com

回应:

enter image description here

当我使用上述 token 通过管理 API 调用触发 LogicApp 时,我得到了响应状态:202 已接受,如下所示:

POST https://management.azure.com/subscriptions/<subID>/resourceGroups/<ResourceGroup>/providers/Microsoft.Logic/workflows/<LogicAppName>/triggers/manual/run?api-version=2016-06-01

回应:

enter image description here

在生成访问 token 之前,请确保根据您的要求为服务主体分配适当的角色

就我而言,我将 Contributor 角色分配给 LogicApp 下的服务主体,如下所示:

enter image description here

关于azure - InvalidAuthenticationTokenAudience - 逻辑应用的身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75551840/

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