首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >@ Azure节点js生成SAS时身份验证失败。

@ Azure节点js生成SAS时身份验证失败。
EN

Stack Overflow用户
提问于 2016-06-16 14:45:26
回答 1查看 331关注 0票数 0

我正在尝试使用SAS将映像上载到Azure存储。下面是我用来生成SAS的代码。

代码语言:javascript
运行
复制
function getWriteSAS() {
    var blobService = storage.createBlobService();
    var container = 'container-name';
    var blobSAS = blobService.generateSharedAccessSignature(container, mCurrentRequest.param.blobName, getSharedAccessPolicy(10));
    urlForDownloading = blobService.host.primaryHost + container + '?' + blobSAS
    mCurrentResponse.status(200).send({"SASURI" : urlForDownloading})
}

function getSharedAccessPolicy(accessTimeInMinutes) {
    var startDate = new Date();
    var expiryDate = new Date(startDate);
    expiryDate.setMinutes(startDate.getMinutes() + accessTimeInMinutes);
    startDate.setMinutes(startDate.getMinutes() - accessTimeInMinutes);

    var sharedAccessPolicy = {
        AccessPolicy: {
            Permissions: storage.BlobUtilities.SharedAccessPermissions.WRITE,
            Start: startDate,
            Expiry: expiryDate
        },
    };
    return sharedAccessPolicy;
}

创建的URL看起来像这样:https://irewardchart.blob.core.windows.net/container-name?st=2016-06-16T06%3A24%3A52Z&se=2016-06-16T06%3A44%3A52Z&sp=w&sv=2015-04-05&sr=c&sig=c%2F%2B7AtkH7zwLhzF%2B74%2FUeMeQ4eLDnWvVDMkiqSqroqc%3D

当我尝试在浏览器中点击URL时,会得到以下结果。

代码语言:javascript
运行
复制
<Error>
<script/>
<Code>AuthenticationFailed</Code>
<Message>
Server failed to authenticate the request. Make sure the value of Authorization header is formed correctly including the signature. RequestId:2fab1644-0001-0087-7c99-c77b1a000000 Time:2016-06-16T06:36:14.5020064Z
</Message>
<AuthenticationErrorDetail>
Signature did not match. String to sign used was w 2016-06-16T06:24:52Z 2016-06-16T06:44:52Z /blob/irewardchart/$root 2015-04-05
</AuthenticationErrorDetail>
</Error>

这里的任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2016-06-16 17:22:41

根据您的描述,您的代码生成的URL遗漏了blobName模式。请仔细检查您应用程序中的参数mCurrentRequest.param.blobName是否获取正确的值。

顺便说一句,你还可以注意另外两点:

  1. 如果您的需求是在浏览器中浏览blob内容,我建议您使用storage.BlobUtilities.SharedAccessPermissions.READ权限,这样可以减少权限问题。
  2. 作为Azure-storage-node sdk提供了一个函数,可以生成带有SAS令牌getUrl()的blob url。因此,如果您检查了mCurrentRequest.param.blobName的值是否正确,但仍然出现问题,请尝试执行以下代码:

..。var blobSAS = blobService.generateSharedAccessSignature(,,getSharedAccessPolicy(10));var sharedBlobService =var blobSAS);urlForDownloading =blobService.getUrl(容器,blobName,blobSAS) ...

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37851718

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档