如何在 Azure 逻辑应用 HTTP 触发器中将 SAS 令牌作为标头传递?

问题描述 投票:0回答:1

我正在使用由 HTTP 请求触发的 Azure 逻辑应用程序。当前设置在查询字符串中使用共享访问签名 (SAS) 令牌来对请求进行身份验证。但是,出于安全原因,我想将 SAS 令牌作为标头传递,而不是将其包含在 URL 中。

这是当我直接在 URL 中包含 sig 参数时有效的当前 URL 格式:

https://prod-24.southcentralus.logic.azure.com:443/workflows/15f36e380c354bd5bd9de2de40b19d54/triggers/When_a_HTTP_request_is_received/paths/invoke?api-version=2016-10-01&sp=%2Ftriggers%2FWhen_a_HTTP_request_is_received%2Frun&sv=1.0&sig=ajC3bRqX8qYfFCEhjP5qT1fyMVlCBQHpreshrikual

我想修改它,以便 SAS 令牌 (sig) 通过标头而不是在查询字符串中传递。

我尝试在 Postman 和curl 中添加 SAS 令牌作为自定义标头,如下所示:

curl -X POST "https://prod-26.southcentralus.logic.azure.com:443/workflows/15f36e380c354bd5bd9ed834de40b19d54/triggers/When_a_HTTP_request_is_received/paths/invoke?api-version=2016-10-01&sp=%2Ftriggers%2FWhen_a_HTTP_request_is_received%2Frun&sv=1.0" \
-H "x-sas-token: ajC3bRqX8qYfFCEhjP5qT1fyMVlCBQHpkMu1eelefqs" \
-H "Content-Type: application/json" \
-d '{}'

但是,我收到以下错误:

{
    "error": {
        "code": "DirectApiAuthorizationRequired",
        "message": "The request must be authenticated only by Shared Access scheme."
    }
}

我的问题:

是否可以通过逻辑应用程序的 HTTP 标头传递 SAS 令牌? 如果不是,我可以使用哪些替代授权方法来保护我的逻辑应用 API,而不暴露 URL 中的 SAS 令牌? 任何帮助或指导将不胜感激!

api postman azure-logic-apps sas-token
1个回答
0
投票

您只能在手动调用 Logic App 的 Http 触发器时在请求 URL 中传递 sas 令牌。

或者,您可以在逻辑应用程序中使用添加 Azure AD 授权策略,其中不需要传递 sas 令牌。

我已参考此文档以在逻辑应用程序中启用授权。您需要通过发行者

https://sts.windows.net/{tenant_id}/
和受众
https://management.core.windows.net/

enter image description here

完成后,使用注册应用程序的凭据生成不记名令牌。

enter image description here

您需要使用请求 url 作为

https://prod-63.eastus2.logic.azure.com:443/workflows/fa****328d/triggers/When_a_HTTP_request_is_received/paths/invoke?api-version=2016-10-01&sp=%2Ftriggers%2FWhen_a_HTTP_request_is_received%2Frun
,然后在请求标头中添加不记名令牌以获得预期的响应。

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.