文档中心 Low Latency Streaming Token Authentication

Token Authentication

更新时间:2025-09-05 17:34:19

本指南介绍如何配置和使用Token身份认证(也称为时间戳防盗链)。该安全特性旨在保护您的直播内容,防止未授权访问和盗链。

通过在您的流式传输URL中添加加密Token和时间戳,您可以控制谁可以访问您的流以及访问的时长。这确保只有持有有效且限定时间的URL的用户才能观看您的内容,从而保障您的流安全,并防止未经授权的分发。

工作原理

认证流程包含三个主要组成部分:

  1. Secret Key: 您在控制台中配置的私钥,仅您和我们的服务器知晓。
  2. Timestamp: 指示URL过期时间或生成时间的时间戳。
  3. Token(签名): 一个使用密钥、URL路径和时间戳在您的服务器端生成的加密签名(哈希值)。

当用户尝试使用已认证的URL访问流媒体时,我们的边缘服务器将执行如下操作:

  1. 接收请求并从URL中提取Token、时间戳及其他参数。
  2. 在服务器端使用相同的密钥和逻辑重新生成Token。
  3. 将URL中的Token与服务器生成的Token进行比对。
  4. 根据时间戳检查URL是否已过期。

如果Token匹配且URL未过期,则允许该用户访问流媒体。否则,拒绝该请求。

控制台配置

要启用并配置令牌认证,请按照以下步骤操作:

  1. 进入 Low Latency Streaming
  2. 选择您要配置的Domain。
  3. 点击 Edit Configuration
  4. 跳转到 Timestamp anti-hotlinking (Live) 部分。

以下是配置面板中每个字段的详细说明:

字段 描述 示例/默认值
应用名称 指定此规则适用的应用。如果留空,则适用于全部应用。
注意:此应用名称需与当前Domain所配置的应用名称保持一致。
live,vod
密文参数名称 URL中Token加密后的参数名称。 默认值:wsSecret
时间参数名称 URL中时间戳参数的名称。 默认值:wsTime
KEY 用于生成Token加密签名的私有密钥。 mysecretkey
加密时间格式 时间戳的格式。 UNIX时间戳十六进制
有效期 URL的过期时间处理方式。 按时长按绝对时间按有效时间不校验时间
有效时长 链接的有效持续时长(秒)。(“按时长”方式下必填) 3600(即1小时)
错误容差时间 此项设置用于为时间校验提供容差(单位为秒),防止因您的服务器与我们的边缘服务器间存在轻微时间偏差,而导致合法URL校验失败。起到时钟偏差容忍作用。 300(即5分钟)
密文组合方式 用于生成Token的公式。 常见为 KEY+Path+Time

生成鉴权URL

在控制台完成功能配置后,您需要更新您的应用程序或后端服务器,为用户生成动态的鉴权URL。

核心逻辑是根据您选择的密文组合方式创建一个字符串,并计算其MD5哈希值。注意:实际参与哈希计算的字符串组成部分会根据您选择的有效期方式有所不同。

示例:按“有效时长”方式

假设您的配置如下:

  • KEY: mysecretkey
  • 密文组合方式: KEY+Path+Time
  • 密文参数名称: wsSecret
  • 时间参数名称: wsTime
  • 加密时间格式: UNIX时间戳
  • 有效时长: 3600 秒(1小时)
  • 原始流URL: http://your.domain.com/live/stream1.flv

以下是在你的服务器上生成签名URL的方法:

  1. **获取URL路径:**路径是指从发布点开始的URL部分,在本例中为 /live/stream1.flv
  2. **获取当前时间:**以UNIX时间戳格式获取当前时间。例如,1678886400
  3. **拼接字符串:**根据你选择的方法,将Key、Path和Time进行组合。
    **重要提示:**路径部分必须与发布点后的URI完全一致,包括前导斜杠。
    string_to_hash = "mysecretkey/live/stream1.flv1678886400"
  4. **计算MD5哈希值:**对 string_to_hash 字符串进行MD5哈希运算。
    wsSecret_value = md5("mysecretkey/live/stream1.flv1678886400")
    假设生成的结果为 b1b5c2c7e8e5e8e5c2c7b1b5c2c7e8e5
  5. 构建最终URL: 将令牌和时间戳作为查询参数追加到原始URL后。
    http://your.Domain.com/live/stream1.flv?wsSecret=b1b5c2c7e8e5e8e5c2c7b1b5c2c7e8e5&wsTime=1678886400

使用此URL的观众将在 1678886400 + 3600 = 1678890000 之前可以访问该流。

示例:按“有效时长”方式

当您希望为每个生成的URL动态定义有效期时,此方法非常实用。假设您的配置与前面示例相同,但这次选择了按有效时长

  • 密钥(KEY): mysecretkey
  • 密文组合方式: KEY+Path+Time(注意:在此模式下,wsKeepTime 的值会在哈希计算时追加在时间戳后面。)
  • 加密参数名称: wsSecret
  • 时间参数名称: wsTime
  • 加密时间格式: UNIX时间戳
  • 期望有效时长: 7200 秒(2小时)
  • 原始流地址(Original Stream URL): https://your.domain.com/live/stream1.sdp

以下是如何在您的服务器上生成签名URL的方法:

  1. 获取URL路径: /live/stream1.sdp
  2. 获取当前时间: 1678886400
  3. 定义有效期: 7200
  4. 拼接字符串: 将密钥、路径、当前时间和有效期(即wsKeepTime值)拼接为一个字符串。
    string_to_hash = "mysecretkey/live/stream1.sdp16788864007200"
  5. 计算MD5值: 对这个新拼接的字符串计算MD5哈希值。
    wsSecret_value = md5("mysecretkey/live/stream1.sdp16788864007200")
    最终结果为20722b11be862a6563657a70a8a8167
  6. 构建最终URL:wsSecretwsTimewsKeepTime作为查询参数追加到URL中。
    https://your.domain.com/live/stream1.sdp?wsSecret=20722b11be862a26563657a70a8a8167&wsTime=1678886400&wsKeepTime=7200

此方法通过允许生成URL的服务器实时设置过期时间,提供了更高的灵活性。

本篇文档内容对您是否有帮助?
有帮助
我要反馈
提交成功!非常感谢您的反馈,我们会继续努力做到更好!