2011-04-11 13 views
2

모든 머리글을 함께 넣어서 개발자를위한 Google 스토리지의 exixting 개체에서 acl을 변경하는 방법을 이해하는 데 문제가 있습니다. 나는 boto 또는 다른 helper libs없이 이것을 수동으로 할 필요가있다.기존 개체의 Google 저장 acl 변경

내가해야 할 일은 기본적으로 개체를 공개에서 비공개로 설정하고 다른 방법으로 설정하는 것입니다.

이 붙어 메신저 내가 서명을 구축하는 방법입니다 나와 곳으로 명확하지 않다 무엇을 기본적으로 내가 the developers guide

PUT /paris.jpg?acl HTTP/1.1 
Host: travel-maps.commondatastorage.googleapis.com 
Date: Mon, 15 Feb 2008 21:30:39 GMT 
Content-Length: 0 
Authorization: GOOG1 GOOGTS7C7FUP3AIRVJTE:Y9gBLAEInIlFv5zlAm9ts= 
x-goog-acl: private 

<empty entity body> 

에있는 예이다. 나는, 포함 MessageToBeSigned를 작성하는 데 ..., 줄 바꿈을 제외해야하는 헤더 부분 몰라

Signature = Base64-Encoding-Of(HMAC-SHA1(UTF-8-Encoding-Of(YourGoogleStorageSecretKey, MessageToBeSigned))) 

: 서명은에 의해 구성되어있다. 누구나 비슷한 것을하고있는 python 샘플 코드를 가진 사람이 있습니까?

감사합니다.

답변

0

먼저 다양한 언어로 인증 권한을 부여하는 Google의 api 클라이언트 라이브러리에 the JSON api을 사용하는 것이 좋습니다.

두 번째로 HMAC 대신 authenticating with OAuth을 사용하는 것이 좋습니다. 요청에 서명하는 방법을 찾는 대신 HTTPS를 통해 액세스 토큰을 보낼 수 있기 때문에 훨씬 쉽습니다. 모든 요청의 라인을 따라 뭔가로 인증된다 :

말했다되고 그건
Authorization: OAuth Bearer 1/2093840249809382402890948 

, 여기 좀 봐 : MessageToBeSigned는 표준 헤더, 확장 헤더와 자원의 UTF8 인코딩으로 정의된다 https://developers.google.com/storage/docs/reference/v1/developer-guidev1#authentication

:

MessageToBeSigned = UTF-8-Encoding-Of(
    CanonicalHeaders + 
    CanonicalExtensionHeaders + 
    CanonicalResource) 

헤더는 다음과 같습니다

CanonicalHeaders = HTTP-Verb + "\n" + 
Content-MD5 + "\n" + 
Content-Type + "\n" + 
Date + "\n" 

기타 ...

Google에 서명하기 위해 잘못된 메시지를 생성하면 Google에서 응답 문자열에 서명하기 위해 예상되는 문자열을 반환합니다. 따라서 서명 할 올바른 문자열을 생성하는지 확인하는 가장 쉬운 방법은 문자열이 Google이 기대하는 문자열과 비교하는 것입니다.