2017-07-11 10 views
1

Amazon S3バケットポリシーをnode.jsのbase64でエンコードして、署名(具体的にはStringToSign)を取得しようとしていますが、取得できないようですコードの権利。node.jsのJSONからs3バケットポリシーをbase64に変換する

amazonで提供されているデフォルトのポリシーを使用して、正しいbase64エンコーディングを提供しているため、テストしています。 policyがどこにある

var policyString = JSON.stringify(policy) 
var policyBytes = utf8.encode(policyString) 
var stringToSign = base64.encode(policyBytes) 

:(The example given by amazon

、それらの出力は、私がこれを生成するeyJleHBpcmF0aW9uIjoiMjAxNS0xMi0zMFQx.....

私のコードを得続ける

eyAiZXhwaXJhdGlvbiI6ICIyMDE1........される(それは短い、それはかなり長いですので維持されます) JSON形式でamazonポリシーを保持する変数、utf8およびbase64はノードモジュールです。

これは初心者の質問のように聞こえるかもしれませんが、私はしばらくそれを見てきました。

+0

base64でエンコードされた値の完全な出力を提供することができます –

+0

私が正しく理解すれば、aws sdkはこの機能を提供します: http://docs.aws.amazon。 com/AWSJavaScriptSDK/latest/AWS/S3.html#createPresignedPost-property ソースコードの計算方法については、ソースコードを確認することができます:https://github.com/aws/aws-sdk-js/blob/d3f0701e8aff9697231f023d2e5a5c289a8ec8ec/ lib/services/s3.js#L905 – Andreas

答えて

2

私はあなたが

eyAiZXhwaXJhdGlvbiI6ICIyMDE1 
eyJleHBpcmF0aW9uIjoiMjAxNS0xMi0zMFQx 

それぞれの出力を提供してきた現在の部分値をデコードは以下の通りであった:

{ "expiration": "2015 
{"expiration":"2015-12-30T1 

あなたのpolicyStringあなたには、いくつかのスペースを削除した中で、見ることができるように。これはあなたが別の出力を得る理由です

+0

これはそれでした!これはJSON.stringify()によって引き起こされたものです。代わりにポリシーを1行に置き、単一引用符で囲みます。 – blongo

+0

素晴らしい。離れて答えを受け入れる、それが助けるなら、upvotingはいくつかの愛を送るだろう:) –

関連する問題