如何使用 SharedAccessSignature 访问 blob

2023-11-25

我正在尝试访问存储在 Windows Azure 中的私有容器中的 blob。该容器具有共享访问签名,但是当我尝试时 要访问 blob,我收到 StorgeClientException“服务器无法验证请求。请确保形成授权标头 正确包括签名”。

创建容器并上传 blob 的代码如下所示:

// create the container, set a Shared Access Signature, and share it 

// first this to do is to create the connnection to the storage account
// this should be in app.config but as this isa test it will just be implemented
// here: 
// add a reference to Microsoft.WindowsAzure.StorageClient 
// and Microsoft.WindowsAzure.StorageClient set up the objects
//storageAccount = CloudStorageAccount.DevelopmentStorageAccount;

storageAccount = CloudStorageAccount.Parse(ConfigurationManager.AppSettings["ConnectionString"]);
blobClient = storageAccount.CreateCloudBlobClient();

// get a reference tot he container for the shared access signature
container = blobClient.GetContainerReference("blobcontainer");
container.CreateIfNotExist();

// now create the permissions policy to use and a public access setting
var permissions = container.GetPermissions();
permissions.SharedAccessPolicies.Remove("accesspolicy");
permissions.SharedAccessPolicies.Add("accesspolicy", new SharedAccessPolicy
                                                               {
                                                                   // this policy is live immediately
                                                                   // if the policy should be delatyed then use:
                                                                   //SharedAccessStartTime = DateTime.Now.Add(T); where T is some timespan
                                                                   SharedAccessExpiryTime =
                                                                       DateTime.UtcNow.AddYears(2),
                                                                   Permissions =
                                                                       SharedAccessPermissions.Read | SharedAccessPermissions.Write
                                                               });

// turn off public access
permissions.PublicAccess = BlobContainerPublicAccessType.Off;

// set the permission on the ocntianer
container.SetPermissions(permissions);

 var sas = container.GetSharedAccessSignature(new SharedAccessPolicy(), "accesspolicy");


StorageCredentialsSharedAccessSignature credentials = new StorageCredentialsSharedAccessSignature(sas);
CloudBlobClient client = new CloudBlobClient(storageAccount.BlobEndpoint,
                                             new StorageCredentialsSharedAccessSignature(sas));

CloudBlob sasblob = client.GetBlobReference("blobcontainer/someblob.txt");
sasblob.UploadText("I want to read this text via a rest call");

// write the SAS to file so I can use it later in other apps
using (var writer = new StreamWriter(@"C:\policy.txt"))
{
    writer.WriteLine(container.GetSharedAccessSignature(new SharedAccessPolicy(), "securedblobpolicy"));
}

我一直试图用来读取 blob 的代码如下所示:

// the storace credentials shared access signature is copied directly from the text file "c:\policy.txt"
CloudBlobClient client = new CloudBlobClient("https://my.azurestorage.windows.net/", new StorageCredentialsSharedAccessSignature("?sr=c&si=accesspolicy&sig=0PMoXpht2TF1Jr0uYPfUQnLaPMiXrqegmjYzeg69%2FCI%3D"));

CloudBlob blob = client.GetBlobReference("blobcontainer/someblob.txt");

Console.WriteLine(blob.DownloadText());
Console.ReadLine();

我可以通过添加帐户凭据来完成上述工作,但这正是我想要避免的。我不想要什么 就像我的帐户凭据一样敏感,我不知道如何在没有帐户凭据的情况下将签名输入客户端应用程序。

任何帮助是极大的赞赏。


为什么这个?

writer.WriteLine(container.GetSharedAccessSignature(new SharedAccessPolicy(), "securedblobpolicy"));

并且不写sas您已经创建了字符串?

已经很晚了,我很容易会丢失一些东西,但似乎您可能没有保存最初用于写入文件的相同访问签名。

也许也与这里无关,但我相信您可以拥有的容器范围策略的数量是有限的。您是否使用此代码将多个文件上传到同一个容器并每次创建一个新容器 sas?

一般来说,我认为最好在需要时为单个 blob 请求一个 sas,并且到期时间较短。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 SharedAccessSignature 访问 blob 的相关文章

  • Azure 网站和有状态 WebApp

    我有一个 PokerApp 的简单版本作为 Azure 网站运行 服务器在内存中存储牌桌的状态 轮到谁 盲注值 牌 等 这里的问题是我不知道我可以在多大程度上依赖WebServer的内存来实现 永久 简单地重新启动服务器就会导致内存丢失 因
  • 在 Azure 数据工厂中执行 python 脚本

    我将数据存储在 blob 中 并且编写了一个 python 脚本来执行一些计算并创建另一个 csv 如何在 Azure 数据工厂中执行此操作 你可以使用Azure 数据工厂 V2 自定义活动 https learn microsoft co
  • 具有特殊AssignableScopes的Azure自定义RM角色定义

    我正在尝试创建一个自定义 Azure RM 角色定义 其范围适用于一个订阅内的某些资源组 我不想提供对所有订阅或仅一个资源组的访问权限 并且我无法指定资源组列表 因为其中一些资源组尚未创建 我只想提供订阅资源组的某些子集的访问权限 为此 我
  • 以编程方式创建 Blob 存储容器

    我有一个要求 即在创建公司时 在我的 storageaccount 中创建关联的 blob 存储容器 并将容器名称设置为传入的字符串变量 我已尝试以下操作 public void AddCompanyStorage string subDo
  • 使用 Python 连接到 Azure SQL

    我正在尝试使用 Python 通过 MySQLdb 连接到 Windows Azure 中托管的 SQL 数据库 我不断收到错误 mysql exceptions OperationalError 2001 错误的连接字符串 当通过 NET
  • 基于生产的 Azure SQL 数据库沙箱

    我有一个大型 Azure Sql 数据库 我需要向团队提供一个沙箱 它是数据库的副本 但允许他们创建 sql 对象 沙箱中的数据需要与生产保持同步 我使用了弹性查询 但是性能并不理想 我查看了数据同步 但公司要求 AD 身份验证 定期恢复生
  • Azure DevOps - 使用 GUI 而不是 YAML 来编辑构建管道

    不久前 Azure DevOps 添加了对 YAML 构建管道的支持 这对于高级用户来说非常好 我明白 专业人士只使用命令行和纯文本工具 GUI 适合弱用户 原因有很多 有没有办法返回 GUI 经典编辑器 来编辑现有管道 我已禁用该功能 如
  • 使用最新的 Javascript 代码片段时如何调用 addTelemetryInitializer?

    我正在尝试自定义综合浏览事件的名称属性 以前曾问过这个问题 例如如何为 Azure App Insights 中的页面视图事件提供自定义名称 https stackoverflow com questions 53778932 how to
  • apple-app-site-association 从 azure 请求返回为 application/JSON

    我有以下要求 当在 Azure 网站中请求文件的 URL 时 根文件夹中的可用文件必须返回到 application JSON 举例来说 我有一个名为 apple app site association 的文件 它是一个文本文件 在 az
  • 使用 Azure 数据工厂将数据加载到 Snowflake 时遇到问题

    我正在尝试使用 Azure 数据工厂将一个小数据表从 Azure SQL 导入到 Snowflake 中 通常我使用这种方法不会有任何问题 https learn microsoft com en us azure data factory
  • Azure Web 角色中的网站项目

    我正在研究一个新的 ASP Net 项目 我们希望将其托管在 Windows Azure Web 角色中 该项目的技术要求之一是利用 ASP Net 的完整预编译选项 不可更新 单页程序集 Web Site项目模型 与 ASP Net 相反
  • 如何从 Azure Graph API 获取基于用户的令牌

    我有一个 Azure Active Directory 在我的 Web Api 中我有一段代码 我可以使用我在 Azure 中注册的应用程序和客户端证书从 Azure Graph Api 获取令牌 这是我现在使用的代码 public sta
  • 从命令行发布 Azure 项目

    我有一个 Azure Web 角色项目 我可以使用 Visual Studio 的内置向导成功发布它 但我们希望自动化该过程 如何使用 MSbuild 或任何其他命令行工具发布 Azure WebRole 您可能还想创建一个控制台应用程序
  • Terraform 后端到 azure blob 存储错误

    我一直在使用下面的方法在 Azure 存储中成功创建 terraform 的后端状态文件 但由于某种原因它停止工作 我已经回收了存储的密码 尝试了两个密钥 但每次都得到相同的错误 后端 tf terraform backend azurer
  • 将 Azure Blob 与 Azure 网站结合使用

    我正在制作一个MVC Windows Azure涉及用户上传图像的网站 我想将图像存储在 blob 中 我搜索了教程 但大多数都涉及Webapps而不是 MVC 网站 我发现的唯一有用的教程是 http www codeproject co
  • 负载平衡 Azure Blob 存储

    有没有什么办法可以实现负载均衡Azure Blob Storage只需使用Azure Load Balancer和Blob Storage 不需要服务 我想要实现的是点击负载均衡器网址 例如 https load balancer some
  • 将 Azure 存储模拟器与 Webjob 结合使用的连接字符串是什么?

    我有一个简单的 WebJob 我希望使用 Azure 存储模拟器对其进行测试 我目前已将 AzureJobsRuntime 和 AzureJobsData 设置为使用开发存储 如下所示
  • Node js 应用程序错误未响应端口 8080 上的 HTTP ping,站点启动失败。在 Azure 应用程序服务 linux 上(不是 docker)

    Nodejs 应用程序在本地运行 如果直接从 Visual Studio 部署到 Azure 应用程序服务 Linux 也可以在应用程序服务上运行 但在使用 azure devops 部署时不起作用 使用 Visual Studio 的工件
  • 如何在 Azure 管道上运行 Karate API 测试

    空手道和 Azure 新手 刚刚使用空手道创建了一些 API 测试 而且很简单 想要进一步添加 Azure 管道 找到了一些仅指向添加 Microsoft 的 pom xml 和 maven 的链接 还发现了 Jekins 集成 但没有适用
  • 发布 Azure Webjob 时出现计划错误

    我在从 VS 2013 发布带有时间表的 Web 作业时遇到问题 我可以毫无问题地发布 按需 作业 但我希望它带有时间表 这是我在下面遇到的错误 发布时似乎找不到 Microsoft Web WebJobs Publish Tasks Cr

随机推荐

  • 从 UICollectionViewCell 使用 UICollectionView

    我有一个自定义 UICollectionViewCell 其内容也是一个集合 我想使用 UICollectionView 来显示其内容 这可能吗 我将如何实现这个目标 我制作了自定义 UICollectionViewCell 也继承自 UI
  • 是否可以在 Javascript 中发出跨域请求并设置自定义标头?

    由于您无法在 JSONP 调用上应用自定义标头 如何使用 jQuery 发出跨域请求并应用自定义标头 我基本上尝试使用 jQuery 访问 google 文档 并且需要传递身份验证令牌 var token my auth token aja
  • 影响 gcc 中的函数克隆/复制/持续传播

    跑步时gcc使用 optimizations on 时 当它认为函数位于热路径中或有常量传播到函数参数时 它会克隆 重复 C 函数 更具体地说 这似乎是由fipa cp clone option 有什么办法可以影响这个吗 例如 使用某些属性
  • 在 NHibernate 3 中使用 Linq 时的预加载

    我需要在 NHibernate 3 trunk 版本中急切加载 Linq 的帮助 我有这样的多对多关系 public class Post public int Id get set public IList
  • Android WebView 编译表单并使用 Javascript 提交

    我正在尝试填写此表格 http www lbalberti it whatsup asp codist 57247 我能够向两个文本框插入值 但按钮不起作用 Override protected void onCreate Bundle s
  • 如何使用FireMonkey截图(多平台)

    我还没有找到在 FMX Platform 中获取屏幕截图的功能 无论如何 其他地方都没有 对于 VCL 有很多答案 stackoverflow google 但是如何在 Windows 和 Mac OS X 中获取图像 位图或其他 的屏幕截
  • 如何从单个 Docker 映像定位多个 .NET Core 版本?

    我有一个目标库 NET 标准 2 0 为了验证兼容性 我想使用 NET Core 的当前版本和长期支持 LTS 版本运行单元测试 当写这个问题时 这些是 Target Framework Target framework moniker T
  • 如何以编程方式动态地为 UIButton 的背景图像着色?

    我正在开发一个应用程序 或者更确切地说是一些可重复使用的 框架 一旦它起作用我很乐意分享 在此应用程序中 用户应该能够从颜色主题列表中进行选择 因此 应用程序必须能够以某种相当动态的方式为其 UI 元素着色 对于按钮 所有着色都不起作用 此
  • 如何反序列化 JSON 数组?

    我在 CXF 中使用 Jackson 来序列化 反序列化数据 不幸的是 我在配置 CXF Jackson 来反序列化 JSON 数组时遇到困难 我很乐意帮助解决这个问题 到目前为止 大部分 json 数据都是对象格式 即 objectCol
  • 你可以为Python中的方法设置属性吗[重复]

    这个问题在这里已经有答案了 我想知道是否可以使用 setattr 将属性设置为类中的方法 如下所示 因为当我尝试时 我收到一个错误 该错误将在代码后显示 class Test def getString self var setattr s
  • 检查用户是否已在客户端登录

    有没有一种安全的方法来检查用户是否已登录应用程序而不是检查用户计算机中是否存在 sid cookie 我想允许用户仅在登录后才能继续访问页面上的某些链接 我在服务器端进行登录验证 但想避免请求行程 纯 JS 或 JQuery 解决方案将不胜
  • 为什么 ECDSA 会为相同的数据生成不同的签名,而 RSA 不会?

    考虑以下使用 RSA 的代码 Example byte raw Encoding Default GetBytes Hello World RSA key RSA Create for int index 0 index lt 5 inde
  • 无法使用 IDEA 和 SBT 运行 LWJGL

    我已经在脑子里挠了一个多小时了 谷歌上似乎没有任何东西能给我一个决定性的答案 我在用着IntelliJ IDEA 13 1 3使用 scala 和 sbt 插件 Scala 2 11 1 and SBT 0 13 我自以为很聪明 将 LWJ
  • 如何从长十六进制字符串创建Python字节对象?

    我在字符串中有一长串十六进制数字 例如 000000000000484240FA063DE5D0B744ADBED63A81FAEA390000C8428640A43D5005BD44 只是更长 几千字节 python 2 6 3 中是否有
  • 为什么 AddMvc 需要 Action 而不是 MvcOptions?

    我正在学习 ASP NET Core 我发现注册 MVC 服务如下所示 public void ConfigureServices IServiceCollection services services AddMvc options gt
  • 有没有Python函数可以检查生成器是否启动?

    我尝试定义一个生成器函数mycount 可以使用生成器功能重置send 0 如下例所示 一切正常 除了我使用时send 0 在尚未启动的新生成器对象上 在这种情况下 它给出了TypeError 是否有任何函数可以检查发电机是否已启动或者我是
  • Android Facebook ApiException:无效的应用程序

    当我尝试使用除我的开发者帐户之外的其他帐户登录时 我收到 Facebook ApiException Invalid Application 错误 甚至我的沙盒模式也已关闭 因为我已经检查了具有相同问题的其他帖子 提前致谢 10 24 17
  • 使用netcat时如何根据请求有条件地响应

    我正在尝试仅使用 Windows 批处理脚本来设置 Web 服务器 我已经想出了以下脚本 echo off setlocal enabledelayedexpansion for l a in 1 0 2 do type tempfile
  • Karate DSL 框架是否能够以 url 编码格式传递 POST 请求?

    我的项目中的某些 API 只能使用编码格式通过 OAuth 2 0 进行访问 我可以使用 POSTMAN 手动提交 POST 因为它具有 x www form urlencoded 功能来发送请求 附图 作为解决方法 我创建了一个 java
  • 如何使用 SharedAccessSignature 访问 blob

    我正在尝试访问存储在 Windows Azure 中的私有容器中的 blob 该容器具有共享访问签名 但是当我尝试时 要访问 blob 我收到 StorgeClientException 服务器无法验证请求 请确保形成授权标头 正确包括签名