Сквозная авторизация в плеере Boomstream: API и интеграция с LMS

пароль
защита
API методы

Сквозная авторизация в плеере Boomstream

Что такое сквозная авторизация?

Сквозная авторизация — это технология, которая позволяет автоматически авторизовать пользователя в плеере Boomstream без необходимости ручного ввода пароля.

Когда ученик входит в ваш личный кабинет и нажимает кнопку «Play», плеер автоматически получает его данные:

  • email;
  • имя;
  • IP-адрес устройства воспроизведения.

Эти данные используются для:

  • отображения динамического водяного знака (имя, email, IP);
  • автоматического предоставления доступа к контенту без дополнительных действий со стороны пользователя.

Кому подходит это решение?

Сквозная авторизация — идеальный выбор для:

Платформа Описание
Онлайн-школы Автоматический доступ к урокам после оплаты
LMS-системы Интеграция с GetCourse, Tilda и другими платформами
Корпоративные порталы Доступ к обучающим видео для сотрудников
Кастомные платформы Любые сайты с собственной системой авторизации

Главные преимущества:

  • Защита от распространения аккаунтов — каждый пользователь авторизуется индивидуально
  • Бесшовный пользовательский опыт — ученик не видит лишних шагов
  • Динамический водяной знак — защита от записи экрана

Предварительные требования

Перед началом настройки убедитесь, что у вас есть:

№ Что нужно Где взять
1 API Key вашего проекта Раздел «Настройки проекта» → «Интеграция» в личном кабинете
2 Код медиафайла или трансляции Берётся из ссылки на видео
3 Код подписки (доступа) Создаётся при настройке доступа по паролю

⚠️ Важное условие: Для работы сквозной авторизации видео должно быть защищено доступом по паролю и опцией «Защита от скачивания».


Пошаговая инструкция по настройке

Шаг 1. Подготовка контента

  1. Загрузите видео на платформу Boomstream по инструкции или создайте трансляцию.
  2. Сохраните код медиафайла — он понадобится для интеграции.

Шаг 2. Создание доступа по паролю

Создайте доступ по паролю в личном кабинете или через API метод create.

Рекомендация: используйте групповой доступ — тогда все видео, добавленные в этот доступ, будут открываться по одному паролю.

Настройте параметры доступа:

  • дата начала;
  • дата окончания;
  • период доступа.

Количество доступов не ограничено. Одно видео может быть одновременно в нескольких доступах.


Шаг 3. Добавьте видео в доступ

Добавьте видео в созданный доступ по паролю одним из способов:

Через интерфейс:

  1. Поставьте галочку слева от названия видео.
  2. Нажмите кнопку «Ограничить доступ».
  3. Выберите нужный доступ из списка.

Через API:
Используйте метод addmedia.


Шаг 4. Регистрация зрителя через API

Когда пользователь получает доступ к уроку на вашем сайте, ваш сервер должен зарегистрировать его в Boomstream и получить уникальный идентификатор сессии (hash).

Вы можете выбрать один из двух вариантов:


Вариант А: Генерация хеша на стороне Boomstream

Вы отправляете email пользователя, а Boomstream возвращает уникальный hash.

Пример запроса (PHP):

Bash
$apiKey = 'YOUR_API_KEY';
$subscriptionCode = 'SUBSCRIPTION_CODE';
$mediaCode = 'MEDIA_CODE';
$email = 'student@example.com';

$url = "https://boomstream.com/api/ppv/addbuyer?apikey={$apiKey}&code={$subscriptionCode}&media={$mediaCode}&email={$email}&notification=0";
$response = file_get_contents($url);
$xml = simplexml_load_string($response);

$hash = (string)$xml->hash; 
// Сохраните этот $hash в сессии или базе данных пользователя

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

XML
<Hash>123456789</Hash>

Вариант Б: Использование собственного хеша

Вы можете передать свой уникальный идентификатор пользователя (например, ID из вашей базы данных), чтобы избежать хранения дополнительного маппинга.

⚠️ Критически важно: ваш кастомный hash должен содержать уникальный префикс проекта (например, projectA_user123), чтобы избежать коллизий с другими проектами на платформе Boomstream.

Пример запроса (Node.js / Axios):

JavaScript
const axios = require('axios');

const params = new URLSearchParams({
  apikey: 'YOUR_API_KEY',
  code: 'SUBSCRIPTION_CODE',
  media: 'MEDIA_CODE',
  email: 'student@example.com',
  notification: '0',
  hash: 'myproject_user_98765' // Ваш уникальный идентификатор
});

const response = await axios.get(`https://boomstream.com/api/ppv/addbuyer?${params}`);
console.log(response.data);

Итоговая ссылка на запрос:

Text
https://boomstream.com/api/ppv/addbuyer?apikey=[API_KEY]&code=[CODE_SUBSCRIPTION]&media=[CODE_MEDIA]&email=[EMAIL]&notification=0&hash=[YOUR_HASH_TO_IDENTIFY_USER]

Шаг 5. Передача параметра в плеер

Полученный hash необходимо передать в ссылку на плеер через параметр id_recovery.

Пример встраивания через iframe:

HTML
<iframe 
  src="https://play.boomstream.com/MEDIA_CODE?id_recovery=myproject_user_98765" 
  width="800" 
  height="450" 
  frameborder="0" 
  allowfullscreen>
</iframe>

Замените MEDIA_CODE на реальный код видео, а myproject_user_98765 — на переменную, полученную с вашего бэкенда.

Итоговая ссылка на плеер выглядит так:

Text
https://play.boomstream.com/0Ut5NKvv?id_recovery=[YOUR_HASH_TO_IDENTIFY_USER]

Шаг 6. Настройка безопасности

6.1. Парковка домена

В личном кабинете Boomstream в разделе «Брендирование» выполните парковку домена.

Адрес вашего плеера станет:

Text
video.vashdomen.ru

⚠️ Это необходимо! Иначе возможна блокировка кроссдоменных запросов браузерами.

6.2. Защита по домену

В личном кабинете в разделе «Защита»:

  1. Укажите разрешённый домен для воспроизведения.
  2. Включите опцию «Запретить воспроизведение если рефферер зрителя пустой».

Настройка защиты


Справочник параметров API addbuyer

Параметр Тип Обязательный Описание
apikey строка ✅ Да Ваш секретный ключ API
code строка ✅ Да Код подписки (группового доступа по паролю)
media строка ✅ Да Код медиафайла или трансляции
email строка ✅ Да Email зрителя (будет отображён в водяном знаке)
notification целое число ❌ Нет 0 — не отправлять email-уведомление зрителю (рекомендуется)
hash строка ❌ Нет Ваш собственный уникальный идентификатор пользователя. Если не указан — Boomstream сгенерирует его автоматически

Сводная таблица шагов

Шаг Действие
1 Загрузите видео или создайте трансляцию
2 Создайте групповой доступ по паролю
3 Добавьте видео в доступ
4 Добавьте зрителя через API (addbuyer)
5 Добавьте параметр id_recovery в ссылку на плеер
6 Настройте передачу параметра в плеер
7 Выполните парковку домена
8 Настройте защиту по домену

Лучшие практики и рекомендации

1. Никогда не храните API Key на фронтенде

Запрос к addbuyer должен выполняться строго с вашего сервера. Не используйте JavaScript на стороне клиента для вызовов API.

2. Используйте динамические водяные знаки

В настройках доступа по паролю включите отображение имени и email в виде водяного знака.

водзнак

3. Очищайте старые доступы

Если пользователь теряет доступ к курсу, используйте API метод для удаления покупателя или изменения срока действия пароля, чтобы аннулировать его hash.


Часто задаваемые вопросы (FAQ)

❓ Почему видео не воспроизводится и показывает ошибку «Доступ запрещён»?

Проверьте следующее:

  1. Параметр id_recovery корректно передаётся в URL плеера.
  2. Видео добавлено в ту подписку, которую вы используете в запросе.
  3. Включена «Защита по домену» и домен, с которого открывается страница, добавлен в список разрешённых.

❓ Можно ли использовать один hash для нескольких видео?

Да, если эти видео добавлены в один и тот же групповой доступ по паролю. Один hash, привязанный к подписке, даёт доступ ко всем медиафайлам внутри этой подписки.

❓ Что делать, если возникает ошибка коллизии hash?

Это происходит, если вы используете Вариант Б (собственный хеш) и указали слишком простой идентификатор (например, 123). Всегда добавляйте к хешу префикс вашего проекта, например: myschool_user_12345.

❓ Работает ли это с мобильными приложениями?

Да, параметр id_recovery корректно обрабатывается в мобильных SDK Boomstream при условии правильной передачи параметров в плеер.


Заключение

Теперь при воспроизведении видео в плеере будет автоматически подставляться пароль, и видео начнёт воспроизводиться без лишних действий со стороны пользователя. Это обеспечивает бесшовный пользовательский опыт и надёжную защиту контента от несанкционированного распространения.