使用Paw App进行错误的S3身份验证

时间:2016-04-08 08:29:52

标签: paw-app

终端设备:EMC ECS, 协议:AWS S3

我尝试使用我的Python脚本进行身份验证,并使用Paw构建相同的请求。

使用 boto

Python 工作得很好。 原始代码:

from boto.s3.connection import S3Connection

accessKeyId = 'objuser'
secretKey = 'spl4vDHl11H7uW/683WZCoYrle03Bn1hd42gy8bd'
host = '10.10.10.10'
port = 9020

conn = S3Connection(aws_access_key_id=accessKeyId,
                    aws_secret_access_key=secretKey,
                    host=host,
                    port=port,
                    calling_format='boto.s3.connection.ProtocolIndependentOrdinaryCallingFormat',
                    is_secure=False)

print conn.get_all_buckets()

S3服务器接受正确的标题

Date: Fri, 08 Apr 2016 07:38:34 GMT 
Authorisation: AWS obtuser:Gi/qcdbyYcVMdI9EkdORPMx2wbo=

接下来,我用Paw重新创建了相同的请求但得到了错误的标题:

Date: Fri, 08 Apr 2016 07:38:34 GMT
Authorisation: AWS obtuser:/znFNFviqD5fw3t1oWUwBQ8B5M4= 

当然它被S3服务器拒绝了。

在Paw中,我使用了标准" S3 Amazon S3授权标题"的授权标题。动态价值。 AWS Access Key ID Secret Access密钥ID 与脚本中的相同(三重检查)。

根据ECS文档,S3身份验证遵循Signing and Authenticating REST Requests因此签名基于标准HMAC-SHA1。 我希望Paw使用相同的方法。

请问您能否提出Paw未创建正确的授权标头以及如何解决该问题的可能原因?

非常感谢提前!

2 个答案:

答案 0 :(得分:0)

很抱歉这个问题已经很晚了!我刚刚使用我们的AWS账户自行测试了这个问题,例如,我已经能够轻松列出所有S3存储桶,请参阅此内容截图:

Amazon S3 list buckets with Paw

似乎这可能是与配置Authorization标头的方式有关的问题,或者是在URL字段中插入了无效字符。 (截图有助于查看可能出现的问题)

答案 1 :(得分:0)

使用Paw v3.0.16和“Amazon S3授权标头”动态值时,此网址出现SignatureDoesNotMatch错误。

GET https://s3-ap-northeast-1.amazonaws.com/bucket123/sub456/some789.json

它适用于此网址。

GET https://bucket123.s3.amazonaws.com/sub456/some789.json

http://docs.aws.amazon.com/AmazonS3/latest/dev/VirtualHosting.html