即使Azure中没有SAS令牌,我也可以打开链接

时间:2017-10-17 21:41:17

标签: c# azure

点击按钮,我将pdf存储在我的blob存储器中。我想添加我能添加的SAS令牌。我正在做与https://docs.microsoft.com/en-us/azure/storage/blobs/storage-dotnet-shared-access-signature-part-2中提到的'GetBlobSasUri()'类似的事情,然后我保存了该网址。我能够生成一个SAS令牌,并且它附加了我在blob中保存的链接。令牌过期后,我无法打开网址。但是如果我删除了我添加到链接的SAS令牌,我就可以打开pdf文档了。我检查了访问策略以确保它是私有的。但它没有帮助,因为在私人模式下我只需删除SAS令牌即可打开pdf文档。

我也想知道每次打开PDF文档时都可以添加SAS令牌。因此,如果有人将URL发送给某人,那么一旦令牌过期,该人将无法打开该链接。现在我所拥有的是点击按钮,pdf是通过将其存储在blob中生成的,并且它附加了一个SAS令牌。

我也在我的数据库中存储令牌以及打开pdf的网址,这有意义吗?

有人可以建议!

2 个答案:

答案 0 :(得分:2)

什么是容器访问级别?是公开还是blob?如果您不想使用URL(没有SAS令牌),它必须是私有的。

另外,我同意大卫;我不会将安全令牌存储在您的数据库中。它应该根据需要生成。你必须写一些东西来生成它。目前尚不清楚您如何向用户提供PDF文件。要执行您要求的操作,您需要一个允许用户选择一个应用程序的应用程序,然后该应用程序将为用户提供一个带有SAS令牌的URL,该令牌将在几分钟后到期。我不知道PDF文件是为了获得SAS令牌还是自己生成SAS令牌。

答案 1 :(得分:0)

尽管问题很老,但是这将有助于寻求解决方案的人。

请检查文件本身以及父容器的访问级别。将此设置为私有将确保没有令牌的URL不起作用。您可能会收到错误代码“ ResourceNotFound”。

此外,由于此令牌的生命周期较短,因此不应将其存储在数据库中,而应即时生成。

作为最佳安全实践,令牌不应存储在数据库中。您可以将它们存储在Azure KeyValult或类似工具中。