2013-04-16 12 views
5

tarihinde Git lang AWS Talebi Kimlik Benim uygulanmasıAWS Talebi Kimlik Doğrulama: Encode Başlık

package main 

import "fmt" 
import "crypto/hmac" 
import "crypto/sha256" 
import "time" 
import "encoding/base64" 

func main() { 
    AWSAccessKeyId := "MHAPUBLICKEY" 
    AWSSecretKeyId := "MHAPRIVATEKEY" 
    sha256   := sha256.New 
    time   := time.Now().UTC().Format(time.ANSIC) 
    hash   := hmac.New(sha256, []byte(AWSSecretKeyId)) 
    hash.Write([]byte(time)) 
    sha   := base64.URLEncoding.EncodeToString(hash.Sum(nil)) 

    fmt.Println("Date", time) 
    fmt.Println("Content-Type","text/xml; charset=UTF-8") 
    fmt.Println("AWS3-HTTPS AWSAccessKeyId=" + AWSAccessKeyId + ",Algorithm=HmacSHA256,Signature=" + sha) 
} 

Ben Amazon geçerli bir çıkış olsun ama çocuklarının SHA 'karma _ herhangi içeren veya olmayan tek zaman -

Çalışma

'WFKzWNQlZEyTC9JFGFyqdf8AYj54aBj5btxPIaGTDbM ='

o da durum çalışır böylece

'h-FIs7of_CJ7LusAoQPzSWVt9hlXF_5gCQgedn_85lk ='

nasıl AWS3 HTTPS başlığını kodlayabilirim HTTP/1.1 403 Yasak SignatureDoesNotMatch Çalışmıyor? Sadece alakalı olması durumunda, şu anda çıktıyı kopyalayıp cURL'ye yapıştırıyorum. Güvenilir bir şekilde çalıştıktan sonra isteği Google Go’da uygulamayı planlıyorum.

+0

sağlamlık denetimi için StdEncoding

sha = base64.URLEncoding.EncodeToString(hash.Sum(nil)) 

için URLencoding değiştirmek için gerekli çıktı: Eğer 'ile' curl' çalıştırdığınız -v' sadece bunu kontrol etmek bukle karıştırmasını değil verilerinizle mi? –

+0

Bunu Go’da uygulamaya koydum ve hiç şansım olmadı, hash’ın _ –

+1

içermediğinde aynı hataları/başarımı yakaladım Hey, bu eski dizgeyi çarpıttığım için üzgünüm ama bu Auth belirtecini farklı bir dilde uygulamaya çalışıyorum ve hash.Write işini anlamaya çalışıyorum? Tuz için mi? Objective-C kullanıyorum. Şerefe! –

cevap

4

ben

sha = base64.StdEncoding.EncodeToString(hash.Sum(nil))