Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services Amazon AWS从安全令牌服务请求令牌_Amazon Web Services_Amazon S3_Access Token_Signature - Fatal编程技术网

Amazon web services Amazon AWS从安全令牌服务请求令牌

Amazon web services Amazon AWS从安全令牌服务请求令牌,amazon-web-services,amazon-s3,access-token,signature,Amazon Web Services,Amazon S3,Access Token,Signature,我正在尝试签署一个amazon sts令牌请求,以临时访问我的S3帐户。我一直在遵循签名版本4的说明,但运气不好 我经常从亚马逊sts收到这条信息 不完整签名 请求必须包含符合AWS标准的签名 这是我正在发送的url请求 https://sts.amazonaws.com/?AWSAccessKeyId=**********&Action=GetFederationToken&DurationSeconds=3600&SignatureMethod=HmacSHA256&

我正在尝试签署一个amazon sts令牌请求,以临时访问我的S3帐户。我一直在遵循签名版本4的说明,但运气不好

我经常从亚马逊sts收到这条信息

不完整签名

请求必须包含符合AWS标准的签名

这是我正在发送的url请求

https://sts.amazonaws.com/?AWSAccessKeyId=**********&Action=GetFederationToken&DurationSeconds=3600&SignatureMethod=HmacSHA256&SignatureVersion=4&Timestamp=2013-04-23T19:01:00Z&Version=2011-06-15&Signature=2fc3dc902a20a5aa25c3191f2aa6513088e11596082b6a563b00dc5ea4b8bfa0
按照签名版本4的步骤,我就是这样计算签名的

任务1:

GET\n
/\n
AWSAccessKeyId=<Access Key Removed>&
Action=GetFederationToken&
DurationSeconds=3600&
SignatureMethod=HmacSHA256&
SignatureVersion=4&
Timestamp=2013-04-23T19:01:00Z&
Version=2011-06-15\n
host:sts.amazonaws.com\n
host\n
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
任务3:

Signature: 2fc3dc902a20a5aa25c3191f2aa6513088e11596082b6a563b00dc5ea4b8bfa0

如果有任何帮助,我将不胜感激。到目前为止,我一直在做这件事,运气不好。提前感谢:)

亚马逊S3目前不支持签名版本4。有关当前支持的签名算法,请参阅S3文档:

编辑:很抱歉误读了您最初的请求。您对STS请求有许多不正确的假设,导致签名计算出现问题:

  • 手术结束了
  • STS唯一受支持的区域是us-east-1
  • 日期必须包含在要签名的标题中
  • 虽然我知道您可能不想使用SDK,但他们将给出如何生成签名的示例

    下面是我从iOS SDK中提取的一个示例

    规范请求:

    POST\n
    /\n
    \n
    host:sts.amazonaws.com\n
    x-amz-date:20130424T164023Z\n
    \n
    host;x-amz-date\n
    HASH_REMOVED\n
    
    要签名的字符串:

    AWS4-HMAC-SHA256\n
    20130424T164023Z\n
    20130424/us-east-1/sts/aws4_request\n
    HASH_REMOVED
    

    AmazonS3目前不支持签名版本4。有关当前支持的签名算法,请参阅S3文档:

    编辑:很抱歉误读了您最初的请求。您对STS请求有许多不正确的假设,导致签名计算出现问题:

  • 手术结束了
  • STS唯一受支持的区域是us-east-1
  • 日期必须包含在要签名的标题中
  • 虽然我知道您可能不想使用SDK,但他们将给出如何生成签名的示例

    下面是我从iOS SDK中提取的一个示例

    规范请求:

    POST\n
    /\n
    \n
    host:sts.amazonaws.com\n
    x-amz-date:20130424T164023Z\n
    \n
    host;x-amz-date\n
    HASH_REMOVED\n
    
    要签名的字符串:

    AWS4-HMAC-SHA256\n
    20130424T164023Z\n
    20130424/us-east-1/sts/aws4_request\n
    HASH_REMOVED
    

    我只是在这里做了个记录,通过修改我的请求,我终于能够得到一个代币。在这种情况下,这将有助于任何其他谁是有同样的问题。我在文档中找不到太多帮助,但通过不断修改我的请求,我终于能够从服务器返回有用的错误消息。最重要的消息是最后一条消息,它给出了请求签名和要签名的字符串应该是什么

    这特别适用于从Amazon安全令牌服务检索联合令牌

    The request signature we calculated does not match the signature you provided. Check your AWS Secret Access Key and signing method. Consult the service documentation for details.
    
    The Canonical String for this request should have been
    'GET
    /
    Action=GetFederationToken&Version=2011-06-15&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAXXXXXXXXXWIQ%2F20130424%2Fus-east-1%2Fsts%2Faws4_request&X-Amz-Date=20130424T183200Z&X-Amz-SignedHeaders=host%3Bx-amz-date
    host:sts.amazonaws.com
    x-amz-date:
    
    host;x-amz-date
    e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855'
    
    The String-to-Sign should have been
    'AWS4-HMAC-SHA256
    20130424T183200Z
    20130424/us-east-1/sts/aws4_request
    3eb22aba7f25dd4e01be888added6f74db579bdf0d066d2b1f75779a25b1300d'
    
    这里是使用的URL


    https://sts.amazonaws.com/?Action=GetFederationToken&Name=Megan&Version=2011-06-15&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIxxxxxxxxxWIQ%2F2030424%2Fus-east-1%2Fsts%2Faws4\U请求&X-Amz-Date=20130424T183200Z&X-Amz-SignedHeaders=host%3Bx Amz日期&X-Amz-Signature=db754013466768c11a86a610796faad6a041bcad9d83f4c958cac82988d2f7d7

    在这里做个记录,我终于能够通过更改请求获得令牌。在这种情况下,这将有助于任何其他谁是有同样的问题。我在文档中找不到太多帮助,但通过不断修改我的请求,我终于能够从服务器返回有用的错误消息。最重要的消息是最后一条消息,它给出了请求签名和要签名的字符串应该是什么

    这特别适用于从Amazon安全令牌服务检索联合令牌

    The request signature we calculated does not match the signature you provided. Check your AWS Secret Access Key and signing method. Consult the service documentation for details.
    
    The Canonical String for this request should have been
    'GET
    /
    Action=GetFederationToken&Version=2011-06-15&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAXXXXXXXXXWIQ%2F20130424%2Fus-east-1%2Fsts%2Faws4_request&X-Amz-Date=20130424T183200Z&X-Amz-SignedHeaders=host%3Bx-amz-date
    host:sts.amazonaws.com
    x-amz-date:
    
    host;x-amz-date
    e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855'
    
    The String-to-Sign should have been
    'AWS4-HMAC-SHA256
    20130424T183200Z
    20130424/us-east-1/sts/aws4_request
    3eb22aba7f25dd4e01be888added6f74db579bdf0d066d2b1f75779a25b1300d'
    
    这里是使用的URL


    https://sts.amazonaws.com/?Action=GetFederationToken&Name=Megan&Version=2011-06-15&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIxxxxxxxxxWIQ%2F2030424%2Fus-east-1%2Fsts%2Faws4\U请求&X-Amz-Date=20130424T183200Z&X-Amz-SignedHeaders=host%3Bx Amz日期&X-Amz-Signature=db754013466768c11a86a610796faad6a041bcad9d83f4c958cac82988d2f7d7我正在使用签名版本4,因为我正在签署一个对Amazon安全令牌服务(STS)的请求,以获得对我的S3帐户的访问令牌。您可能要考虑查看我们可用的SDK中的任何一个,因为它们都有签名版本4的实现。有一点需要注意:STS仅在美国东部-1中可用,因此,这就是您希望用于STS请求签名的区域,即使您将在us-gov-west-1中用于S3。我不希望使用SDK。我已将该区域更改为us-east-1,但仍然返回相同的错误(签名不完整)。我很确定我的错误在任务1或任务2中的某个地方,因为我能够获得与任务3中的示例相同的签名令牌,所以我知道我的哈希算法工作正常。在任务1或任务2中,除了我刚才更改的区域之外,您是否还发现了其他错误?我已经更新了我的答案,添加了几个问题和从我们的SDK中提取的一个示例。我使用签名版本4,因为我正在对亚马逊安全令牌服务(STS)的请求进行签名为了获得对我的S3帐户的访问令牌。您可能需要考虑查看我们可用的SDK中的任何一个,因为它们都有签名版本4的实现。有一点需要注意:STS仅在美国东部-1中可用,因此,这就是您希望用于STS请求签名的区域,即使您将在us-gov-west-1中用于S3。我不希望使用SDK。我已将该区域更改为us-east-1,但仍然返回相同的错误(签名不完整)。我很确定我的错误在任务1或任务2中的某个地方,因为我能够获得与任务3中的示例相同的签名令牌,所以我知道我的哈希算法工作正常。在任务1或任务2中,除了我刚刚更改的区域之外,你还发现了其他错误吗?我已经更新了我的答案,添加了几个问题和一个从我们的SDK中提取的示例。