容器的 Azure SAS 令牌引发错误'invalid Signature Size'



我正在尝试从Azure上的容器中列出并下载斑点。当我尝试使用存储帐户访问密钥进行操作时,它可以很好地工作。但是,使用SAS令牌时失败。我使用以下PowerShell脚本生成了SAS令牌:

    $storageContext = New-AzureStorageContext -StorageAccountName "myAccount" -StorageAccountKey "<account key>"
$permission = "rwdl"
$sasToken = New-AzureStorageContainerSASToken  -Name "myContainer" -Policy "testPolicy" -Context $storageContext >>sastoken.txt
"

我得到以下结果:

?sv=2017-04-17&sr=c&si=testPolicy&sig=dbS680%2FXgPp4o%2BQCCzpYzGZszCnDHVjCkdHZRf6KDeg%3D

我用资源URI附加了SAS令牌以获取:

https://myAccount.blob.core.windows.net/myContainer?sv=2017-04-17&sr=c&si=testPolicy&sig=dbS680%2FXgPp4o%2BQCCzpYzGZszCnDHVjCkdHZRf6KDeg%3D

并运行以下CLI命令:

az storage blob list --container-name myContainer --account-name myAccount --auth-mode key --debug --sas-token "https://myAccount.blob.core.windows.net/myContainer?sv=2017-04-17&sr=c&si=testPolicy&sig=dbS680%2FXgPp4o%2BQCCzpYzGZszCnDHVjCkdHZRf6KDeg%3D" >> bloblist.txt

我有以下错误:

azure.multiapi.storage.v2018_03_28.common.storageclient: 客户端request-id = 0F7A 7762-3729-11E9-8B32-FFC4C9592D0A重试政策 不允许重试:Server- Timestamp = SAT,2019年2月23日05:08:30 GMT,Server-Request-ID = 21F07A6A-F01E-00E9-32 35-CB7D5C000000,HTTP 状态代码= 403,异常=服务器无法验证请求。 确保正确形成授权标题的价值 签名。errorcode:AuthenticationFailed AuthenticationFailed 服务器无法验证输入请求。确保价值 授权标题是相关形成的 signature.requestid:21F07A6A-F01E-00EE9-3235-CB7D5C00000000TIME :2019-02-23T05:08:30.7149353Z 签名 大小无效

您没有执行此操作所需的所需权限。根据您的操作,可能需要分配以下RO之一Les:

"Storage Blob Data Contributor (Preview)"
"Storage Blob Data Reader (Preview)"
"Storage Queue Data Contributor (Preview)"
"Storage Queue Data Reader (Preview)"

如果您想使用旧身份验证方法并允许查询right帐户密钥,请使用" - auth-mode"参数和"键"值。

事件:CommandInvoker.onfilterresult []'CommandResultItem'对象是 不是迭代的追溯(最新通话最后):文件 " c: users vssadm〜1 appdata local temp pip install-r8nye8gm knack knack knack cl cl cl i.py",第212行,在Invoke文件中 " c: users vssadm〜1 appdata local temp pip install-r8nye8gm knack knack knack knack ou tput.py",第132行,输入文件 " c: users vssadm〜1 appdata local temp pip install-r8nye8gm knack knack knack knack ou tput.py",第38行,format_json typeerror:'CommandResultItem' 对象不是遥测的遥控器:保存遥测记录 长度2499在缓存中

我尝试生成一个存储帐户级别SAS门户,但没有找到任何运气。

请帮忙!

对于与403 AuthenticationFailed相同的AZCOPY错误的任何其他人,但细节显示Signature size is invalid-我在尝试从Windows .bat文件脚本脚本AZCOPY时遇到了相同的问题。当您获得SAS URL时,字符串中会有百分比符号。从.bat文件运行时,您必须将百分比符号的百分比符号加倍到" Escape" 。例如无论您在URL中看到一个%的位置,都可以使其%% - 希望这会有所帮助!

有趣的是,我记得在我编写的前3个Azcopy脚本中这样做,几周后,为一个新的存储帐户制作了第四个,并且无法弄清楚为什么我一直在403下次我再次忘记时要提醒自己:)

您遇到此错误的原因是因为您使用了完整的SAS URL而不是SAS令牌。

请更改以下内容:

az storage blob list --container-name myContainer --account-name myAccount --auth-mode key --debug --sas-token "https://myAccount.blob.core.windows.net/myContainer?sv=2017-04-17&sr=c&si=testPolicy&sig=dbS680%2FXgPp4o%2BQCCzpYzGZszCnDHVjCkdHZRf6KDeg%3D" >> bloblist.txt

to

az storage blob list --container-name myContainer --account-name myAccount --auth-mode key --debug --sas-token "?sv=2017-04-17&sr=c&si=testPolicy&sig=dbS680%2FXgPp4o%2BQCCzpYzGZszCnDHVjCkdHZRf6KDeg%3D" >> bloblist.txt

您应该能够列出斑点。

相关内容

最新更新