Разделы документации
Поиск⌘KПодписанные ссылки
Ваш сервер сам решает, кому смотреть, и выдаёт ссылку на поток со сроком жизни. dodocast только проверяет подпись.
На этой странице
Тариф
Подписанные ссылки — для прямых ссылок на поток, они есть на Pro и Business.
Ключ подписи
- «Настройки» → «Ключи подписи» → «Создать ключ».
- Сохраните секрет: он показывается один раз, при создании. Храните его как пароль от базы и не отдавайте в браузер — подписывать только на сервере.
- У ключа есть идентификатор
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 минут.
Обновлено: