基于具有有效期的令牌的服务端授权

基于具有有效期的令牌的服务端授权

我正在尝试通过 HTTP 创建视频流,具体授权方法如下所述,但我不确定如何处理这个问题。

目前我正在使用 Motion 包,它允许您轻松地通过互联网转发本地摄像头的视频流。它还提供用户名和密码授权。但对于我的用例来说,这并不理想。

我的想法是,我希望能够按需向用户提供链接,让用户能够在有限的时间内重复访问该流。理想情况下,这将是 URL 参数形式的一些令牌(https://www.link.com/stream?authId=FGJNDKD1256DD),这将允许任何拥有此令牌的人连接到流,而无需任何其他授权,但令牌也会在 1 小时后过期。

有人知道如何实现这一点吗?我是否需要编写自己的 Web 应用程序并自定义令牌生成和授权处理,或者是否有任何 Web 服务器可以提供此类开箱即用的授权?

谢谢

答案1

为了实现所需的视频流授权方法,您可能需要实施自定义解决方案。一种可能的方法是为每个请求访问视频流的用户生成一个唯一的令牌,并将该令牌与到期时间相关联。

你可以采取以下步骤来实现这一点:

  1. 生成随机 token 字符串:可以使用 Python 中的 uuid 等库来生成唯一的 token 字符串。
  2. 存储令牌及其有效期:您可以将此信息存储在数据库中,例如 SQLite 或 MySQL。每次用户请求访问视频流时,您都可以根据数据库检查令牌以验证其有效性和有效期。
  3. 创建用于视频流的自定义端点:您可以创建一个自定义端点,该端点接受令牌作为参数并根据数据库进行检查。如果令牌有效且未过期,端点可以返回视频流。如果令牌无效或已过期,端点可以返回错误消息。
  4. 提供视频流:您可以使用 NGINX 等 Web 服务器提供视频流。NGINX 支持 HTTP 实时流 (HLS),并且可以提供多种格式的视频,包括 MP4 和 MPEG-TS。

总的来说,这种方法需要一些编程和数据库设置,但它应该允许您提供您正在寻找的特定授权方法。

答案2

只需为他们提供一个唯一 ID,例如 UUID 或 GUID,或者某个带有时间 + 盐值的哈希用户名。在创建时将该密钥存储在带有到期日期的查找表中。

URL 传入密钥,查找密钥,如果过期,则不予兑现。

定期清除表中过期的密钥。

相关内容