Разделы документацииПоиск⌘K

ДокументацияЗащита

Подписанные ссылки

Ваш сервер сам решает, кому смотреть, и выдаёт ссылку на поток со сроком жизни. dodocast только проверяет подпись.

На этой странице

Тариф

Подписанные ссылки — для прямых ссылок на поток, они есть на Pro и Business.

Ключ подписи

  1. «Настройки» → «Ключи подписи» → «Создать ключ».
  2. Сохраните секрет: он показывается один раз, при создании. Храните его как пароль от базы и не отдавайте в браузер — подписывать только на сервере.
  3. У ключа есть идентификатор sk_… — он идёт в заголовок токена.
Ключи подписиКлючи подписи
«Настройки» → «Ключи подписи»

Отозванный ключ перестаёт работать в течение минуты — ссылки, подписанные им, тоже.

Токен

Обычный JWT с подписью HS256:

json
header:  { "alg": "HS256", "typ": "JWT", "kid": "sk_ваш_идентификатор" }
payload: { "code": "abc123XYZ0", "iat": 1791676800, "exp": 1791678600 }
  • code — код видео, плейлиста, трансляции или канала. Токен от одного не откроет другое.
  • iat и exp обязательны; срок жизни — не больше 24 часов.
  • Подписывать можно только свой контент.
  • Секрет подставляется в подпись строкой, ровно как его выдала консоль.
js
// Node.js, библиотека jsonwebtoken
import jwt from 'jsonwebtoken'

const token = jwt.sign({ code: 'abc123XYZ0' }, process.env.DODOCAST_SECRET, {
  algorithm: 'HS256', keyid: 'sk_ваш_идентификатор', expiresIn: '30m',
})
const url = `https://stream.dodocast.com/s/${token}/hls/mp4/abc123XYZ0/master.m3u8`
python
# Python, библиотека PyJWT
import time, jwt

now = int(time.time())
token = jwt.encode({"code": "abc123XYZ0", "iat": now, "exp": now + 1800},
                   SECRET, algorithm="HS256", headers={"kid": "sk_ваш_идентификатор"})
url = f"https://stream.dodocast.com/s/{token}/hls/mp4/abc123XYZ0/master.m3u8"

В Player SDK это уже готово: signToken(), signedStreamUrl(), signedPlaylistItemUrl() из @dodocast/player/server.

Куда подставлять

Токен идёт в путь ссылки — плеер сам запросит качества, сегменты и ключ шифрования с тем же префиксом.

ЧтоПуть
Видео/s/{jwt}/hls/mp4/{code}/master.m3u8
Трансляция/s/{jwt}/live/mp4/{code}/index.m3u8
Канал/s/{jwt}/ch/mp4/{code}/index.m3u8
Урок курса (токен на код плейлиста)/public/pl/{code}/item/{itemCode}?t={jwt}
Как применить ключКак применить ключ
Пример кода и адреса прямо в консоли

Если ссылка отдаёт 403

  • подписан чужой контент — ключ действует только на ваш;
  • exp минус iat больше 24 часов;
  • в токене есть поле purpose — его быть не должно;
  • ключ отозван (или создан заново — проверьте kid);
  • часы вашего сервера ушли вперёд больше чем на 5 минут.

Обновлено:

    ↑ ↓ — выбрать, Enter — открыть, Esc — закрыть