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

hrysbysz  于 2023-02-25  发布在  其他
关注(0)|答案(1)|浏览(139)

经过几天的挣扎,我会尝试在这里得到一些帮助。我有几个逻辑应用程序-一些HTTP触发器和一些SQL触发器(当一个项目被创建,当一个项目被修改)。他们运行每X小时,但客户端请求有可能运行逻辑应用程序也手动通过一个按钮点击他的自定义Web应用程序。
为了能够运行逻辑应用程序(调用触发器),我正在尝试获取授权的Bearer令牌并运行逻辑应用程序。我遵循了所有这些步骤www.example.com。简而言之,https://www.serverlessnotes.com/docs/securing-azure-logic-app-http-triggers-with-azure-ad#(客户端和服务)包括角色应用和API权限。然后我在Authorization the Issuer下添加到一个LogicApp(https://login.windows.net/{tenantid}/oauth2/token/)和Audience(服务应用程序注册的ClientId)-即链接中的步骤5。(client and service) including role app and API permissions. Then I added into a LogicApp under Authorization the Issuer ( https://login.windows.net/{tenantid}/oauth2/token/ ) and the Audience (the ClientId of the Service App registration) - that is Step 5 from the link.
但是我发现我在这里错过了一些理解。因为现在当我测试它(如链接中所描述的)时,我有以下错误。
首先获取令牌:

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

已为错误的访问群体或资源"XXX"获取访问令牌。它应与允许的访问群体"https://management.core.windows.net/"、" https://management.core.windows.net "、" https://management.azure.com/"、"https://management.azure.com"之一完全匹配。

POST请求的链接是LogicApp的触发器,如:* * 第一个e第一个f第一个x
我知道这个链接是有效的,因为如果我尝试输入我的个人数据(电子邮件和密码),它会成功。但是为了避免代码中的用户名和密码数据,我想用这个令牌解决这个问题。但是我不知道我需要在哪里修复它,以便观众匹配-在逻辑应用程序中还是在那些应用程序注册中?我将非常感谢任何帮助。

eqoofvh9

eqoofvh91#

我尝试在我的环境中重现相同的结果,结果如下:

我和你一样注册了Azure AD应用程序,并添加了API权限,如下所示:

现在我通过Postman生成了访问令牌,参数如下:

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

当我使用上述标记执行LogicApp Trigger时,我得到了相同的错误,如下所示:

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

解决错误,您需要通过传递不带SAS密钥的Logic App URL来更改请求URL。
当我这样更改请求URL时,LogicApp成功触发,并显示以下响应:

POST <Logic Apps URL without SAS key>
    • 答复:**

如果您希望使用Management REST API触发逻辑应用程序,则需要使用不同的资源生成访问令牌,如下所示:

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

当我使用上述令牌触发LogicApp with Management API调用时,我得到了responseStatus: 202 Accepted如下所示:

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

在生成访问令牌之前,请确保根据您的要求为服务主体分配正确的角色
在我的示例中,我将**Contributor**角色分配给LogicApp下的服务主体,如下所示:

相关问题