刷新 Azure Blob 存储的 SAS 令牌

Refresh SAS Token for Azure Blob Storage

我在 Azure Bob 存储中保存了一个视频文件 (mp4)。我正在通过 SAS 令牌访问此视频文件。 SAS 令牌将在 45 秒后过期。假设视频是5分钟,显示的视频只会播放45秒然后暂停。

我想做的是每 45 秒获取一个新的 SAS Token,这样视频就可以不间断地连续播放。我如何更改我的代码以使其连续显示视频?

注意:我的代码只会播放视频 45 秒,然后停止。我正在使用 Angular.

ngOnInit(): void {
  this.getVideoURL ();
}


  getVideoURL () : Observable <string>
  {
      return this.httpClient.get<string>('https://url.com/getsastoken', { responseType: "json"})
      .pipe(map (
        (data: string) =>
        {
          this.sasTOken = data;
          this.urlOfVideo = 'https://myblob.blob.core.windows.net/app.mp4?'+ this.sasTOken;
        }
      ));
  }

HTML

            <video oncontextmenu="return false;"  id="vid1" class="amp-default-skin" controlsList="nodownload" autoplay controls width="640" height="400" poster="poster.jpg" data-setup='{"nativeControlsForTouch": false}'>
                <source src={{urlOfVideo}} >
            </video>

您无法更改 SAS,而且我怀疑您能否轻松修改代码以频繁更改 URI 上的 SAS 令牌。

但是:您可以创建存储访问策略(更多信息here)。在查看存储视频的容器时,您会在门户中找到此选项(无法在单个 blob 上设置访问策略;相反,它们是在特定容器上设置的)。对于视频观看,您应该将其设置为仅具有读取权限。

然后您可以在策略上设置 start/stop 时间(我没有尝试过 45 秒 window,但我怀疑这会起作用)。设置完成后,您可以根据策略生成 SAS。此时,将 SAS 添加到您的视频的 URI 将授予最终用户 view/stream 您的视频内容的能力,直到过期时间。

独立于 SAS,您可以编辑(或删除)SAS 所基于的访问策略。所以......在你的情况下,你可以定期延长你的政策的结束日期(从而保持基于 SAS 的 URI 有效)。请注意,任何更改都需要 30 秒以上才能生效。另请注意,该策略将应用于给定容器内的所有 blob。

我提到了门户,因此您可以试用 policies/SAS,但这也可以通过 SDK 调用实现(例如,here 是 .NET SDK 的文档)。