2017-05-21 3 views
0

Comment créer la signature codée hexadécimale dans crypto dans un environnement nodejs?Amazon S3 Signature

enter image description here

-vous faire exactement cela comme ça?

const secret = 'mysecret'; 
const date = yyyymmdd; 
const dateKey = crypto.createHmac('sha256', 'AWS4' + secret + ',' + date); 
const dateRegionKey = crypto('sha256', dateKey + ',' + 'myregion') 
const DateRegionServiceKey = crypto('sha256', dateRegionKey + ',' + 'someservice'); 
const signingKey = crypto('sha256', DateRegionServiceKey + ',' + 'aws4_request'); 

const signature = crypo('sha256', signingKey + base64Policy); 
+0

'base64Policy'? Donc, vous créez une signature pour un [téléchargement POST] sous forme de navigateur (http://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-post-example.html)? –

Répondre

0

Haut niveau, cela semble correct. J'espère que vous savez que le secret n'est pas seulement une chaîne, c'est la clé secrète de votre paire accessKey/secretKey de l'utilisateur IAM.

Avez-vous une raison particulière de le faire vous-même et de ne pas utiliser AWS SDK?

Regardez également ci-dessous pour un exemple de mise en œuvre de signature (en Java) qui fonctionne pour AWS ElasticSearch. Regardez les méthodes getSignatureKey et calculateSignature.

https://github.com/dy10/aws-elasticsearch-query-java/blob/master/src/main/java/dy/aws/es/AWSV4Auth.java

0

vous devez utiliser cette bibliothèque https://github.com/mhart/aws4 vous devez utiliser result = aws4.sign({}, { cred from AWS })

et il retourne result.headers qui sont les en-têtes, vous devez envoyer votre demande