2017-08-17 14 views
0

これは私がストレージにブロブにアクセスしようとすると、エラーが返されます。私のAzure SAS Token Signatureはなぜ一致しませんか?

コード: メッセージをAuthenticationFailed:サーバーは要求を認証に失敗しました。 Authorizationヘッダーの値が署名を含めて正しく構成されていることを確認します。 AuthenticationErrorDetail:署名が一致しませんでした。文字列は、使用した署名するxxstorageaccount rwdlac BはSCO 2017-08-17T21:29:24Z 2017-08-17T21:34:24Z httpsを2017年4月17日

は、ここに私のコードです:

$storageAccount = config('azure.storage.account'); 

$start = new \DateTime();  
$end = (new \DateTime())->modify('+5 minutes'); 
$start = $start->format('Y-m-d\TH:i:s\Z'); 
$end = $end->format('Y-m-d\TH:i:s\Z'); 

$toSign = $storageAccount . "\n"; 
$toSign .= "rwdlac" . "\n"; 
$toSign .= "b" . "\n"; 
$toSign .= "sco" . "\n"; 
$toSign .= $start . "\n"; 
$toSign .= $end . "\n"; 
$toSign .= "\n"; 
$toSign .= "https" . "\n"; 
$toSign .= "2017-04-17" . "\n"; 

$signature = rawurlencode(base64_encode(hash_hmac('sha256', $toSign, $sasKeyValue, TRUE))); 
$token = "?sv=2017-04-17&ss=b&srt=sco&sp=rwdlac&se=" . $end . "&st=" . $start . "&spr=https&sig=" . $signature; 

return $uri . $token; 
+0

'$ sasKeyValue'変数の値とは何ですか?アカウントキーですか? –

答えて

1

このエラーを回避するには、2つのことができます。

  1. 変換はsetTimezone()機能を経由してGMT時間にと終了開始時刻またはその代わりgmdate functionを使用することを検討して

  2. デコードベース64アカウントキー〜base64_decode()機能。

次のようにコードを変更してください:

$storageAccount = config('azure.storage.account'); 

$start = (new \DateTime())->setTimezone(new DateTimeZone('GMT'));  
$end = (new \DateTime())->setTimezone(new DateTimeZone('GMT'))->modify('+5 minutes'); 
$start = $start->format('Y-m-d\TH:i:s\Z'); 
$end = $end->format('Y-m-d\TH:i:s\Z'); 

$toSign = $storageAccount . "\n"; 
$toSign .= "rwdlac" . "\n"; 
$toSign .= "b" . "\n"; 
$toSign .= "sco" . "\n"; 
$toSign .= $start . "\n"; 
$toSign .= $end . "\n"; 
$toSign .= "\n"; 
$toSign .= "https" . "\n"; 
$toSign .= "2017-04-17" . "\n"; 

$signature = rawurlencode(base64_encode(hash_hmac('sha256', $toSign, base64_decode($sasKeyValue), TRUE))); 
$token = "?sv=2017-04-17&ss=b&srt=sco&sp=rwdlac&se=" . $end . "&st=" . $start . "&spr=https&sig=" . $signature; 

return $uri . $token; 
関連する問題