You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调用Azure Logic App时的身份认证问题:AWS Lambda Python端报Authorization头缺失

问题根因与解决步骤

你遇到的请求返回202但Azure端报认证错误的现象,是因为Logic App的HTTP触发采用异步处理机制:入口层收到请求后会先返回202响应,后续再异步执行认证校验、业务逻辑,因此认证错误不会直接返回给调用方,只会记录在Azure端的运行日志中。

1. URL中sp参数的说明

你请求URL里的sp、sv、sig是SAS(共享访问签名) 令牌的组成部分,和Service Principal(服务主体)无关:

  • sp 是Shared Access Policy的缩写,代表当前SAS关联的访问策略
  • sv 是SAS的版本号
  • sig 是SAS签名
    默认使用SAS认证的Logic App触发请求,不需要额外加Authorization请求头,直接携带完整带SAS参数的URL发起请求即可通过认证。

2. 报错的常见原因

场景1:Logic App触发认证配置被修改

如果之前带SAS的请求可以正常运行,现在突然要求Authorization头,大概率是Logic App的管理员将触发器的认证方式从「SAS认证」改成了「Azure AD认证」,修改后原有的SAS参数不再生效,所有请求必须携带Azure AD颁发的Bearer令牌才能通过认证。

场景2:SAS令牌已过期

如果管理员没有修改认证配置,首先检查你使用的URL中的SAS是否已经过期。SAS令牌创建时可以自定义有效期,过期后会触发认证失败类错误。

场景3:请求头配置缺失

你贴出的代码中使用了headers变量但没有给出定义,如果你没有在headers中指定Content-Type: application/json,也可能导致Logic App无法正确解析请求内容,触发认证校验逻辑异常。

3. 修复方案

情况A:确认认证方式已切换为Azure AD

你需要联系Azure管理员为你分配服务主体的调用权限,获取租户ID、客户端ID、客户端密钥后,调用Azure AD的令牌接口获取Bearer令牌,再将令牌添加到请求的Authorization头中,格式为:Authorization: Bearer <获取到的令牌>

情况B:确认仍使用SAS认证

  1. 找Logic App管理员重新生成未过期的SAS触发URL,替换你代码中的旧URL
  2. 修正请求代码,参考示例如下:
import requests

url = "替换为最新的带SAS的Logic App触发URL"
body = {
    "company": "X",
    "owner": "bob@email.com"
}
# requests直接传json参数会自动序列化内容并设置Content-Type头
response = requests.post(url, json=body)

内容的提问来源于stack exchange,提问作者208_man

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 18:15:10