使用ADF Web Activity列出存储账户表时认证失败求助
Azure存储表Web Activity认证失败问题排查与解决
问题场景
已添加源存储账户SAS Token参数,通过Web Activity调用Azure表存储的列出表接口,配置如下:
- URL:
@concat('https://srcstoreacc131.table.core.windows.net/Tables', pipeline().parameters.sourceSAS) - Headers:
Accept-application/json(作为动态内容值) - Method: GET
触发认证失败错误,错误信息:
<?xml version="1.0" encoding="utf-8" standalone="yes"?> <error xmlns="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata"> <code>AuthenticationFailed</code> <message xml:lang="en-US">Server failed to authenticate the request. Make sure the value of Authorization header is formed correctly including the signature. Time:2024-04-23T12:32:02.1385780Z</message> </error>
排查与解决步骤
修正URL拼接格式
检查SAS Token是否以?开头:如果参数sourceSAS没有包含?,拼接后的URL会缺少参数分隔符,导致服务无法正确解析SAS Token。
调整URL表达式:@concat('https://srcstoreacc131.table.core.windows.net/Tables', if(startswith(pipeline().parameters.sourceSAS, '?'), '', '?'), pipeline().parameters.sourceSAS)或者直接确保SAS Token参数本身以
?开头,避免重复拼接。验证SAS Token权限
确认生成SAS Token时,已授予表服务的List(列出)权限:检查SAS Token的sp参数,需包含l(例如sp=rl表示读取+列出权限)。无List权限会导致列出表接口调用被拒绝。修正请求头格式
当前Headers配置错误,正确的键值对应为:- 键:
Accept - 值:
application/json
不要将键和值合并写为Accept-application/json。
- 键:
检查SAS Token有效期
确认SAS Token是否在有效期内,过期的Token会直接触发认证失败,可重新生成有效期内的Token测试。
内容的提问来源于stack exchange,提问作者Vaishnavi Vaishu
相关产品推荐
相关产品推荐

