限制通过 IIS 中的签名 URL 访问内容?

Ada*_*dam 5 iis asp-classic

过去,我使用 NGINX 和ngx_http_secure_link_module来实现这一点,效果很好。如果您尝试直接访问媒体文件,您会得到一个403 access denied error. 但是使用有效的签名 URL...

emample.com/media/audio.mp3?expires=[1 hour]&signature=[SHA2(filename+expiration+secret)]
Run Code Online (Sandbox Code Playgroud)

...授予访问权限。

但我现在正在使用 IIS,并且我想实现同样的目标。我尝试过将 ASP 代码与 URL 重写模块结合使用,在其中创建一个空媒体文件夹,其中包含一个 ASP 页面来处理请求,将所有媒体存储在脱机文件夹中,并使用重写模块来欺骗 URL。

例如...

emample.com/media/audio.mp3?expires=[1 hour]&signature=[SHA2(filename+expiration+secret)]
Run Code Online (Sandbox Code Playgroud)

...将重写到名为“stream.asp”的页面。我会检查签名,如果不正确则返回错误,但否则我会更改内容类型属性以匹配文件的属性,然后从存储实际文件的脱机文件夹中执行二进制流。

这对于文档来说效果很好,但对于音频和视频来说,它很慢,而且你无法来回跳过内容。我确信我可以调整代码来实现这一点,但是以这种方式访问​​文件会给 IIS 带来很大的压力。

我正在寻找的是 IIS 中的简单 URL 检查,它根据 URL 签名检查授予对文件的访问权限或拒绝文件访问权限。

有人知道可以做到这一点的 IIS 模块吗?或者甚至可以使用 URL 重写模块来实现这一点?