问题标签 [azure-sas]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
azure - Azure 在到期格式上获取用户委派失败
我正在尝试使用 REST API 为 Azure 存储获取用户委托 SAS 令牌。
我有一个帐户,该帐户具有存储帐户所需的角色,并且该帐户已成功通过身份验证并从登录端点返回了 Bearer 令牌。
当我请求用户委托密钥时,我不断收到以下错误:
我提交的正文是从Azure docs复制的,:
知道我做错了什么或错过了什么导致失败吗?
在 Azure 上分配的角色是:
以及请求标头:
webhooks - 没有身份验证的 Azure 事件中心侦听器
我想将 Azure 事件中心作为 WebHook 注册到不支持任何标头/正文身份验证的第三方应用程序,只是一个简单的 URL。
我在 Azure 事件中心文档或门户中看不到允许我在没有 SAS 的情况下设置侦听器的任何地方?我知道这会使事件中心不安全,但是,因为它只是侦听有效负载并将其写入 Azure Blob 存储,我很乐意接受这个风险。
如果无法在没有任何身份验证的情况下设置 Azure 事件中心,我考虑设置 Azure 自动化 Runbook 以公开 Webhook。Runbook 会将有效负载传递到处理身份验证的 Azure 事件中心。这是可接受的做法吗?
还有其他已知的解决方法吗?
azure - Azure IoT Hub IoT 设备页面显示权限错误
在 Azure IoT 中心的“IoT 设备”页面上,出现错误:
- 我检查了共享访问策略
iothubowner
具有所有权限(注册表读/写、服务连接和设备连接) - 我是订阅的唯一用户
- 我检查了活动日志,它显示我已成功运行 Get all IoTHub Keys 操作。
其他潜在背景:
- 我最近一直在使用 ARM 模板和 SAS 策略来启用从 IoT 中心生命周期事件 --> 事件中心 --> Azure 函数触发的 Azure 函数。删除/添加资源时,我是否有可能以某种方式删除了所需的 SAS 策略?
- 我一直在创建/使用 IoT 中心的消息路由
- 我一直在使用 ARM 模板和他们最近创建的资源组来预配/删除非 IoT 中心资源。
知道 Azure 为什么说缺少权限吗?下一个调试步骤是什么?
azure - 签名不匹配。使用的签名字符串是 rl
我正在尝试为 blob 创建 Azure SAS。但是,我收到身份验证失败错误。无论我尝试什么,我都无法构建格式良好的 stringToSign 或签名。
错误说:
“签名不匹配。使用的签名字符串是 rl 2021-03-11T08:08:46Z 2021-03-12T08:08:46Z /blob/{myAccountName}/quickstartcontainer/sampleFile2813061026464365578.txt 2020-02-10 b”
我的 stringToSign 是:
我的 SAS 令牌 uri 是:
加密函数为:
如何为我的 sas uri 生成格式良好的签名?
azure - Microsoft.StorageSync 频繁发起 Returns Storage Account SAS Token 操作
当前的 Azure 设置:
我的存储帐户上有一个私有文件共享(使用私有链接设置),它与我的 Azure 文件同步服务(当前不是私有)连接。我有一个同步组设置,添加了可以端点,指向私有文件共享。
问题:
底层的 Microsoft.StorageSync 服务(服务原理)不断地从存储帐户请求 SAS 令牌,从而淹没我们的日志。当云端点添加到同步组时,问题就开始了——此时没有配置服务器端点,但正如我测试的那样,即使设置了完整的同步并正常工作,问题仍然存在。将文件同步到文件共享没有问题,常量日志是问题所在。
Q1:这是预期的行为吗?
Q2:为什么会发生这种情况,有没有办法阻止这些日志?
细节
存储帐户:标准 GZRS ,StorageV2,热
文件共享:事务优化,5 TiB
文件同步:Vanilla 部署无需额外更改
所有这些都使用 ARM 模板进行部署。
描述:
由于文件共享上的私有端点设置,我已经检查了这种可能性,但这不是问题。
我已经在防火墙和虚拟网络设置中将“允许受信任的 Microsoft 服务访问此存储帐户”标记为例外。
另一个观察结果是,即使在文件同步服务被删除数小时后,此问题仍然存在。
azure-blob-storage - 通过浏览器 javascript 生成 Azure blob 用户委托 SAS 的问题
我一直在尝试创建一个网页以允许我:
- 使用 msal-browser 库生成 Windows 身份平台登录弹出窗口以获取不记名令牌。
- 使用它从 blob rest api 获取用户委托密钥,以及
- 使用密钥生成用户委托 SAS 并列出我的容器的内容。
我已经到了生成 SAS 代码的步骤,但我生成的签名无效。我已经做了很多寻找答案的工作,但我自己无法确定问题,需要一些帮助。
从我获得不记名令牌并检索用户委托密钥(有效)开始:
接下来我构建我的“StringToSign” - 格式基于https://docs.microsoft.com/en-us/rest/api/storageservices/create-user-delegation-sas:
根据 msdn,在构建了 StringToSign 之后,我们需要生成“HMAC-SHA256(URL.Decode(UTF8.Encode(StringToSign)))”。我希望文档为您提供示例输入和输出,以便您在被迫创建该功能时可以验证该功能。
这是我放在一起的 HMAC 函数:
像这样得到一个 HMAC:
并最终将该值添加到此 URL 并在 Postman 中使用:
回复:
正如建议的那样,这些字段存在一些问题。StringToSign 中的字段是否应该与作为查询参数传递给 Blob REST API 的字段完全匹配?我确定我已经读过 StringToSign 必须为任何未使用的可选参数包含一个空字符串 - 不确定如何将其作为 GET 请求查询参数处理。[1]:https ://gauravmantri.com/2020/02/21/avoiding-authorizationfailed-error-when-hand-crafting-shared-access-signature-for-azure-storage/#disqus_thread
azure - 天蓝色 SAS | 错误 | 确保 Authorization 标头的值正确形成,包括签名
我有将数据发送到 Azure SAS 的详细信息。
存储帐户名称:acountname123 Blob 容器名称 - containername123
我试图从soapui 调用它,但是它给出了与授权标头相关的错误。你能帮我解决我需要在授权标头中传递的内容吗?
我按照以下链接 https://docs.microsoft.com/en-us/rest/api/storageservices/put-blob https://docs.microsoft.com/en-us/azure/storage/common/storage-sas -overview?toc=%2fazure%2fstorage%2fblobs%2ftoc.json
谢谢亚坦
azure - 音频文件的 Azure SAS 到期
我们的音频文件存储在 Azure Blob 存储中。
为用户提供播放音频文件的 SAS URL 链接。SAS URL 的有效期为 5 分钟。但是,对于长音频文件(比如 10 分钟),音频流在 5 分钟后播放音频时停止,因为令牌过期,这是正确的做法。
但是,解决此问题的正确方法是什么?客户端是否在到期时间之前向后端请求新的 SAS 令牌?
azure-functions - Blob SAS URI 字符在作为查询参数传递到 Azure 函数应用程序时解码
我想将图像文件的 SAS URI 作为查询参数传递给 Azure Functions。但是当我在 GET 调用中传递以下 URL 时,来自“sig”部分的一些字符会被解码 https://ABCD.blob.core.windows.net/images/test.jpg?sp=r&st=2021-05-06T11: 30:21Z&se=2022-05-06T19:30:21Z&spr=https&sv=2020-02-10&sr=b&sig=JuPyAR%2F5WNeSVXj4G%2Fft9QDMzL%2BtXSywSS375jZpjXQ%3D
%2F 到 / %2B 到 + %3D 到 =
因此,当我尝试访问 blob 时,出现错误:
System.Private.CoreLib:执行函数时出现异常:FUNCTIONNAME。System.Net.Requests:远程服务器返回错误:(403)服务器未能验证请求。确保 Authorization 标头的值正确形成,包括签名..
我正在使用以下代码访问 URI
string image = req.Query["image"];