2016-10-08 30 views
0

クライアントがストレージアカウントのすべてのコンテナにアクセスできるように、アカウントレベルの共有アクセスサインを作成しようとしています。私はこれらの文書Account SASに従っています。それはまっすぐ進むようですが、次のエラーメッセージが表示され続けます:Azureアカウント共有アクセスのサイン

"署名が一致しませんでした。使用する文字列はaccountname \ nrl \ nb \ nsc \ n \ n2016-10-09 \ n \ n \ n2015 -04-05 \ n "

私のパラメータは同じですので、私はどのように私は文字列を署名するためにハッシュしていると関係があると思われる。以下は、私がトークンを構築する方法です。

var crypto = require('crypto'); 
var accountName = 'accountname'; 
var accountKey = 'tH37FTlG3TUT86caMrt2y5kOzof8nFqqA6spzg6r7HPRojE1zDiLJD/xE4oLFDh4RNqAmymvlV7fm8W4SF8cJg=='; 

var signedPermissions = "sp=rl"; 
var signedServcies = "ss=b"; 
var signedResourceType = "srt=sc"; 
var signedExpiry = "se=2016-10-09"; 
var signedVersion = "sv=2015-04-05"; 

var stringToSign = accountName + "\n" + signedPermissions + "\n" + signedServcies + "\n" + signedResourceType + "\n" + signedExpiry + "\n" + signedVersion + "\n"; 
var hmacsha256 = crypto.createHmac('sha256', accountKey).update(stringToSign).digest('base64'); 
var token = signedPermissions + "&" + signedServcies + "&" + signedResourceType + "&" + signedExpiry + "&" + signedVersion + "&sig=" + hmacsha256; 

私もcrypto-jsを使ってみましたが、役に立たなかったです。コンテナ内のブロブにアクセスするために使用される最終的なURLは、私は日のためにしようとしていると、本当に私が間違ってやっている知っていただければ幸いです...

https://accountname.blob.core.windows.net/containername/blobName?srt=sc&se=2016-10-09&api-version=2015-04-05&sp=rl&ss=b&sv=2015-04-05&sig=IFD2wyfRAsHGU5IFg3RbwSJW6tRE0m0%2FxgAYvJ%2FmnEk%3D

です。ありがとう。

+0

これはあなたの実際のアカウントキーだった場合、私は、このキーを持つ人があなたのアカウント –

答えて

0

次(臆面もなくAzure Storage Node.js libraryから取られたコード)を試してみてください:

var hmacsha256 = crypto.createHmac('sha256', new Buffer(accountKey, 'base64')).update(stringToSign, 'utf-8').digest('base64'); 
+0

感謝のGauravにアクセスすることができます原因が、私はまだ同じエラーを取得し、すぐにそれを変更することをお勧め。 – Benzene

+0

私が気づいたもう一つのことは、 'stringToSign'(例えば' signedstart')にすべてのパラメータを含めていないということです。このパラメータを使用していない場合は、そのために '\ n'を含めてください)。 –

+0

私はそれを_var stringToSign = accountName + "\ n" + signedPermissions + "\ n" + signedServcies + "\ n" + signedResourceType + "\ n \ n" + signedExpiry + "\ n \ n \ n" + signedVersion + "\ n"; _しかし、残念ながら私はまだ同じエラーが発生します。 – Benzene

1

ベンゼン、stringToSignため、値はパラメータ名を持つべきではないのですか?

var signedPermissions = "rl"; var signedServcies = "b"; var signedResourceType = "sc"; var signedExpiry = "2016-10-09"; var signedVersion = "2015-04-05";

+0

そしてGauravのコメントも有効です。これまでに試したようなすべてのパラメータも含める必要があります。 –

関連する問題