PHP为Blob存储创建有效的Azure签名

韦特杰克

有人可以为我提供一个工作示例(php),用于为在2015年仍在运行的Microsoft azure blob服务构建“共享访问签名URL时创建签名所需的签名吗?我在互联网上找到的所有示例和教程都在使用旧的非官方的azure sdk,或者从提供的代码创建的签名不起作用,因为我总是遇到以下错误:

<Error>
    <Code>AuthenticationFailed</Code>
    <Message>Server failed to authenticate the request. Make sure the value of  Authorization header is formed correctly including the signature. RequestId:2c406e11-0001-00b1-3a5a-0eb263000000 Time:2015-10-24T12:46:34.5256055Z</Message>
    <AuthenticationErrorDetail>Signature fields not well formed.</AuthenticationErrorDetail>
</Error>

这是我尝试过的代码:这个这个

所以这是我目前的代码:

$key = "myKeyBase64==";
$sig = getSASForBlob("accName","containerName", "abc.mp3", "b", "r", date("c", time() + 30000), $key);
$url = getBlobUrl("accName","containerName","abc.mp3","b","r",date("c", time() + 30000),$sig);

echo($url);

function getSASForBlob($accountName,$container, $blob, $resourceType, $permissions, $expiry,$key){
     /* Create the signature */
     $_arraysign = array();
     $_arraysign[] = $permissions;
     $_arraysign[] = '';
     $_arraysign[] = $expiry;
     $_arraysign[] = '/' . $accountName . '/' . $container . '/' . $blob;
     $_arraysign[] = '';
     $_arraysign[] = "2014-02-14"; //the API version is now required
     $_arraysign[] = '';
     $_arraysign[] = '';
     $_arraysign[] = '';
     $_arraysign[] = '';
     $_arraysign[] = '';

     $_str2sign = implode("\n", $_arraysign);

     return base64_encode(
     hash_hmac('sha256', urldecode(utf8_encode($_str2sign)), base64_decode($key), true)
     );
}

 function getBlobUrl($accountName,$container,$blob,$resourceType,$permissions,$expiry,$_signature){
     /* Create the signed query part */
     $_parts = array();
     $_parts[] = (!empty($expiry))?'se=' . urlencode($expiry):'';
     $_parts[] = 'sr=' . $resourceType;
     $_parts[] = (!empty($permissions))?'sp=' . $permissions:'';
     $_parts[] = 'sig=' . urlencode($_signature);
     $_parts[] = 'sv=2014-02-14';

     /* Create the signed blob URL */
     $_url = 'https://'
     .$accountName.'.blob.core.windows.net/'
     . $container . '/'
     . $blob . '?'
     . implode('&', $_parts);

     return $_url;
 }
高拉夫·曼特里(Gaurav Mantri)

我发现您的代码有一个问题:

本质上,您是在以无效的格式格式化到期时间。您的到期时间应以YYYY-MM-DDTHH:mm:ssZ格式设置。

请尝试以下代码:

$expiry = gmdate("Y-m-d\TH:i:s\Z", time() + 30000);
$sig = getSASForBlob("accName","containerName", "abc.mp3", "b", "r", $expiry, $key);
$url = getBlobUrl("accName","containerName","abc.mp3","b","r",$expiry,$sig);

无需您进行更改getSASForBlobgetBlobUrl运行。

我尝试使用上面的代码,并且能够使用SAS URL下载blob。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

PHP为Blob存储创建有效的Azure签名

来自分类Dev

为IIS创建有效的测试SSL证书

来自分类Dev

为JavaScript创建有效的JSON映射

来自分类Dev

无法创建有效的 URL

来自分类Dev

如何为数字签名创建有效的公钥和私钥?

来自分类Dev

如何使用函数为jqGrid editoptions值创建有效的字符串?

来自分类Dev

无法为Python 3.4创建有效的虚拟环境

来自分类Dev

我可以使用gethttpsforfree为locahost或Intranet域创建有效的证书吗?

来自分类Dev

为购物车中的项目创建有效负载数组

来自分类Dev

为 DNSKEY 资源记录创建有效的 RSA/SHA256 密钥

来自分类Dev

如何从ALAssetRepresentation创建有效的CGImageSourceRef?

来自分类Dev

使用内置函数从整数创建有效时间

来自分类Dev

根据网络请求创建有效的PDF

来自分类Dev

使用for循环创建有效的json数据

来自分类Dev

使用UNION创建有效的查询

来自分类Dev

创建有效的文件扩展名列表

来自分类Dev

测试字符串以创建有效密码

来自分类Dev

PortfolioAnalytics 在创建有效边界时出错

来自分类Dev

难以构建有效的查询

来自分类Dev

我可以在Azure Blob存储中为单个文件具有多个共享访问签名吗?

来自分类Dev

我可以在azure blob存储中为单个文件具有多个共享访问签名吗?

来自分类Dev

在执行简单的LEFT JOIN时,如何创建有效的DQL语句以匹配有效的SQL?

来自分类Dev

为具有模糊性的cross_fields构建有效的Elasticsearch查询

来自分类Dev

如何在没有控制器的情况下创建有效的AuthenticationManager?

来自分类Dev

在没有xts对象的情况下在PortfolioAnalytics中创建有效的边界

来自分类Dev

黑莓没有创建有效的sqlite数据库

来自分类Dev

创建有效的活动USB磁盘(具有持久性)的方法?

来自分类Dev

创建有角度的用户列表(有效地)

来自分类Dev

无法在无业游民的盒子上创建有效的meteor.js项目

Related 相关文章

  1. 1

    PHP为Blob存储创建有效的Azure签名

  2. 2

    为IIS创建有效的测试SSL证书

  3. 3

    为JavaScript创建有效的JSON映射

  4. 4

    无法创建有效的 URL

  5. 5

    如何为数字签名创建有效的公钥和私钥?

  6. 6

    如何使用函数为jqGrid editoptions值创建有效的字符串?

  7. 7

    无法为Python 3.4创建有效的虚拟环境

  8. 8

    我可以使用gethttpsforfree为locahost或Intranet域创建有效的证书吗?

  9. 9

    为购物车中的项目创建有效负载数组

  10. 10

    为 DNSKEY 资源记录创建有效的 RSA/SHA256 密钥

  11. 11

    如何从ALAssetRepresentation创建有效的CGImageSourceRef?

  12. 12

    使用内置函数从整数创建有效时间

  13. 13

    根据网络请求创建有效的PDF

  14. 14

    使用for循环创建有效的json数据

  15. 15

    使用UNION创建有效的查询

  16. 16

    创建有效的文件扩展名列表

  17. 17

    测试字符串以创建有效密码

  18. 18

    PortfolioAnalytics 在创建有效边界时出错

  19. 19

    难以构建有效的查询

  20. 20

    我可以在Azure Blob存储中为单个文件具有多个共享访问签名吗?

  21. 21

    我可以在azure blob存储中为单个文件具有多个共享访问签名吗?

  22. 22

    在执行简单的LEFT JOIN时,如何创建有效的DQL语句以匹配有效的SQL?

  23. 23

    为具有模糊性的cross_fields构建有效的Elasticsearch查询

  24. 24

    如何在没有控制器的情况下创建有效的AuthenticationManager?

  25. 25

    在没有xts对象的情况下在PortfolioAnalytics中创建有效的边界

  26. 26

    黑莓没有创建有效的sqlite数据库

  27. 27

    创建有效的活动USB磁盘(具有持久性)的方法?

  28. 28

    创建有角度的用户列表(有效地)

  29. 29

    无法在无业游民的盒子上创建有效的meteor.js项目

热门标签

归档