Описание
CDN 2.2 реализует следующие дополнительные возможности по сравнению с CDN 2.0 и 2.1:
- управление доступом к потокам внутри CDN
Управление доступом к потокам в CDN
CDN 2.2 позволяет ограничивать доступ к определенным потокам в CDN для подписчиков. Доступ защищается ключами, организованными в списки контроля доступа (ACL) для каждого потока. Подписчик может запросить поток для воспроизведения, только указав правильный ключ. Ключ указывается при помощи специального параметра, передаваемого при установке соединения с сервером.
Новый поток публикуется на Origin сервере как доступный всем подписчикам по умолчанию. Назначение ключей и дальнейшее управление списками контроля доступа к потоку производится на Origin сервере при помощи REST API.
Любые изменения в ACL потока немедленно рассылаются всем серверам в CDN, и при получении применяются сервером. Таким образом, если ключ подписчика больше не входит в ACL потока, воспроизведение для этого подписчика будет остановлено с признаком ошибки Restricted access.
После остановки и повторной публикации потока с таким же именем, он создается с чистым ACL, т.е. доступным всем подписчикам.
Настройка
Для того, чтобы указать наименование параметра, при помощи которого подписчики будут передавать ключи доступа, необходимо установить следующий параметр в файле flashphoner.properties на всех серверах одной CDN
client_acl_property_name=aclAuth
В данном случае параметр будет называться aclAuth
Чтобы удостовериться, что значения ключей не могут быть перехвачены, рекомендуется переключить CDN на использование SSL при помощи параметра
wcs_agent_ssl=true
Управление списками контроля доступа к потоку при помощи REST API
Для управления ключами доступа к потоку на Origin сервере используется REST API
REST-запрос должен быть HTTP/HTTPS POST запросом в таком виде:
- HTTP: http://test.flashphoner.com:8081/rest-api/cdn/stream/access_list/add
- HTTPS: https://test.flashphoner.com:8444/rest-api/cdn/stream/access_list/add
Здесь:
- test.flashphoner.com - адрес WCS-сервера
- 8081 - стандартный REST / HTTP порт WCS-сервера
- 8444 - стандартный HTTPS порт
- rest-api - обязательная часть URL
- /rest-api/cdn/stream/access_list/add - используемый REST-метод
REST-методы и статусы ответа
REST-метод | Пример тела REST-запроса | Пример тела REST-ответа | Статусы ответа | Описание |
---|---|---|---|---|
/cdn/stream/access_list/add | { "name":"test", "authorizedKeys":["key1","key2","key3"] } | 200 – OK 500 – Internal Server Error | Добавить ключи в список контроля доступа к потоку | |
/cdn/stream/access_list/remove | { "name":"test", "authorizedKeys":["key1"] } | 200 – OK 500 – Internal Server Error | Удалить ключи из списка контроля доступа к потоку | |
/cdn/stream/access_list/cleanup | { "name":"test" } | 200 – OK 500 – Internal Server Error | Очистить список контроля доступа к потоку | |
/cdn/stream/access_list/print | { "name":"test" } | [ "key1" ] | 200 – OK 404 - ACL not found 500 – Internal Server Error | Показать список контроля доступа к потоку |
Параметры
Имя параметра | Описание | Пример |
---|---|---|
name | Имя потока в CDN | test |
authorizedKeys | Список ключей доступа к потоку | ["key1","key2","key3"] |
Доступ к потоку со стороны подписчика
При помощи WebSDK для воспроизведения по WebRTC
Для воспроизведения потока по WebRTC необходимо передать ключ доступа к нему как дополнительный параметр в функцию createSession
Flashphoner.createSession({urlServer: "wss://test.flashphoner.com:8443", custom: {aclAuth: "key1"}}).on(SESSION_STATUS.ESTABLISHED, function(session){ ... });
Имя параметра должно соответствовать заданному в настройке, в данном случае aclAuth
Передача ключа доступа в параметрах соединения при воспроизведении по RTMP
Для воспроизведения потока в плеере по RTMP необходимо передать ключ доступа в параметрах соединения
rtmp://edge1.flashphoner.com:1935/live?aclAuth=key1/test
Здесь
- edge1.flashphoner.com - имя сервера
- aclAuth - имя параметра, как указано в настройке
- test - имя потока
Обратная совместимость
CDN 2.2 обратно совместима с CDN 2.0 и 2.1, при этом могут воспроизводиться только потоки с чистыми ACL (вновь опубликованные).