Перейти к содержимому
Аутентификация

Аутентификация

TorrPlay защищает API и стриминг с помощью двух методов аутентификации, которые настраиваются через /api/v1/settings.

По умолчанию аутентификация отключена.

Типы аутентификации

Базовая аутентификация (basic)

Для каждого защищённого запроса к API нужно передавать имя пользователя и пароль в стандартном HTTP-заголовке Authorization: Basic ....

Аутентификация по Bearer-токену (bearer)

Работает на основе JWT (JSON Web Tokens). При обращении к защищённым эндпоинтам токен передаётся в заголовке Authorization: Bearer <token>.

Имя пользователя должно содержать от 4 до 64 символов, пароль — от 4 до 128 символов.

Включение аутентификации

Имя пользователя и пароль требуются для всех защищённых операций API.

curl -X PATCH http://localhost:8090/api/v1/settings \
  -H "Content-Type: application/json" \
  -d '{
    "auth": {
      "enabled": true,
      "type": "basic",
      "username": "your-username",
      "password": "your-password"
    }
  }'

Получение токена (Bearer Auth)

Эндпоинт /oauth/token доступен только при включённом режиме bearer:

curl -X POST http://localhost:8090/oauth/token \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -d "grant_type=password&username=your-username&password=your-password"

Пример ответа:

{
  "access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
  "token_type": "bearer"
}

Срок действия токена — 24 часа. Эндпоинт выдачи токенов и /api/system/health доступны без аутентификации: так клиент может войти в систему и проверить доступность TorrPlay.

Изменение настроек аутентификации

В ответе GET /api/v1/settings пароль никогда не возвращается. Если вы меняете другие параметры аутентификации и хотите сохранить текущий пароль, не добавляйте поле password в запрос PATCH /api/v1/settings.

Любое изменение настроек аутентификации — включение или отключение защиты, выбор другого типа или смена учётных данных — отзывает все активные токены доступа, воспроизведения и Stremio.

Делегированные токены воспроизведения (Playback Tokens)

Если в TorrPlay включена аутентификация (Basic или Bearer), стриминг (/api/v1/stream/*), генерация плейлистов (/api/v1/playlist) и потоки Stremio также защищаются.

Чтобы подключать внешние плееры (VLC, Infuse, Kodi, Smart TV) без передачи пароля администратора или постоянных JWT-токенов в строке URL, TorrPlay поддерживает делегированные токены воспроизведения:

Создание токена воспроизведения

Эндпоинт: POST /api/v1/tokens

curl -X POST http://localhost:8090/api/v1/tokens \
  -H "Authorization: Bearer your-jwt-token" \
  -H "Content-Type: application/json" \
  -d '{"scope": "playback"}'

(При использовании Basic Auth укажите -u your-username:your-password вместо заголовка Bearer).

Пример ответа:

{
  "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
  "scope": "playback",
  "expires_at": "2026-09-11T16:00:00Z"
}

Токен воспроизведения действует 24 часа.

Использование токенов воспроизведения в ссылках

Передайте полученный токен в параметре запроса token:

http://localhost:8090/api/v1/stream/{hash}?path=video.mp4&token=your-playback-token
http://localhost:8090/api/v1/playlist?token=your-playback-token

Important

Принцип наименьших привилегий: передача токена в строке запроса (?token=...) работает только для токенов с ролью playback и исключительно при запросах к видеопотокам или плейлистам. Передать административный токен через параметр URL нельзя — сервер отклонит такой запрос, чтобы исключить утечку ключей через журнал прокси или историю браузера.

Выполнение авторизованных запросов к API

С токеном Bearer

Передавайте JWT-токен в заголовке Authorization:

curl -H "Authorization: Bearer your-jwt-token" http://localhost:8090/api/v1/torrents

С Basic Auth

Используйте флаг -u в curl:

curl -u your-username:your-password http://localhost:8090/api/v1/torrents

Восстановление доступа

Если вы забыли учётные данные, аутентификацию можно временно отключить, перезапустив TorrPlay с переменной окружения TORRPLAY_DISABLE_AUTH:

TORRPLAY_DISABLE_AUTH=true ./torrplay --data-dir=./data

Это откроет полный доступ к API без запроса логина и пароля. Обновите настройки через PATCH /api/v1/settings, затем удалите переменную окружения и перезапустите TorrPlay в обычном режиме.

Последнее обновление