: 나는 Devpay S3 버킷을 표시하기 위해 노력하고있어
. 내가 사용- 점점 "SignatureDoesNotMatch"오류
참고 :
1 http://docs.amazonwebservices.com/AmazonS3/latest/API/RESTServiceGET.html
2 http://docs.amazonwebservices.com/AmazonDevPay/latest/DevPayDeveloperGuide/QuickReferenceS3Products.html
3. http://docs.amazonwebservices.com/AmazonDevPay/2007-12-01/DevPayDeveloperGuide/DesktopAWSCalls.html
내가하고 있어요 방법 : PHP를 사용하여
간단한 REST GET 요청 libcURL 라이브러리 :
GET/HTTP/1.1
Host: s3.amazonaws.com
Date: $date
X-Amz-Date: $date
X-Amz-Security-Token: $userToken, $productToken
Authorization: $signatureValue
곳
$date // = timestamp at the time of request
$signatureValue //= Authorization: AWS $signature
$signature //= $userAccessKey:$signatureString
$signatureString //=base64 encoded HMAC-SHA1 of $stringToSign with $userSecretKey
$stringToSign //= utf8 encoded string:
이 문자열 - 나는 GET 요청을 실행하는 curl_exec()
을 사용하고
GET\n
""\n
""\n
$date\n
$canonicalized_AMZ_Headers\n
/
. 내가 갖는
오류 :
"우리는 당신이 제공하는 서명과 일치 키와 서명 방법을 확인하지 않는 계산 요청 서명.""SignatureDoesNotMatch"
고마워요!
어떤 도움을 주시면 감사하겠습니다.
S3에서 반환 한 서명 할 문자열에 '$ date'가 없었기 때문에 제거했습니다. 아마존이 반환 한 '$ stringToSign'과 StringToSign을 비교해 보면, 둘 다 똑같은 것처럼 보입니다. 죄송 합니다만 오류 : ( –
서명 된 S3 URL은 __always__에 만료 시간을 포함해야하며 만료 시간도 검색어 매개 변수로 설정해야합니다. [인증 페이지] (http://docs.amazonwebservices.com/AmazonS3/latest /dev/RESTAuthentication.html) 자세한 내용은 PHP 사용자 (또는 Devpay 사용자 중 하나)가 아니지만 AWS는 [PHP SDK] (http://aws.amazon.com/sdkforphp/)를 제공합니다.) 어쨌든 대부분의 돌봐야한다 .HHH. –
감사합니다. 우리는 서명 된 URL을 사용하지 않습니다. x-amz-date 헤더를 제외하고 정기적 인 Date :를 포함하여이 문제를 해결할 수있었습니다. .. "헤더 대신 .2 개의 보안 토큰을 정규화 된 형식이 아닐 경우 별도로 나열해야합니다. ps php sdk는 불행히도 devpay s3 버킷에서 작동하지 않습니다. –