CDN 2.2 реализует следующие дополнительные возможности по сравнению с CDN 2.0 и 2.1:
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 |
Для управления ключами доступа к потоку на Origin сервере используется REST API
REST-запрос должен быть HTTP/HTTPS POST запросом в таком виде:
Здесь:
REST-метод | Пример тела REST-запроса | Пример тела REST-ответа | Статусы ответа | Описание | ||
---|---|---|---|---|---|---|
/cdn/stream/access_list/add |
| 200 – OK 400 - Bad request 404 - Stream not found 500 – Internal Server Error | Добавить ключи в список контроля доступа к потоку | |||
/cdn/stream/access_list/remove |
| 200 – OK 400 - Bad request 404 - Stream not found 500 – Internal Server Error | Удалить ключи из списка контроля доступа к потоку | |||
/cdn/stream/access_list/delete |
| 200 – OK 400 - Bad request 404 - Stream not found 500 – Internal Server Error | Очистить список контроля доступа к потоку | |||
/cdn/stream/access_list/print |
|
| 200 – OK 404 - ACL not found 500 – Internal Server Error | Показать список контроля доступа к потоку |
Имя параметра | Описание | Пример |
---|---|---|
name | Имя потока в CDN | test |
keys | Список ключей доступа к потоку | ["key1","key2","key3"] |
Для воспроизведения потока по WebRTC необходимо передать ключ доступа к нему как дополнительный параметр в функцию createSession
Flashphoner.createSession({urlServer: "wss://test.flashphoner.com:8443", custom: {aclAuth: "key1"}}).on(SESSION_STATUS.ESTABLISHED, function(session){ ... }); |
Имя параметра должно соответствовать заданному в настройке, в данном случае aclAuth
Для воспроизведения потока в плеере по RTMP необходимо передать ключ доступа в параметрах соединения
rtmp://edge1.flashphoner.com:1935/live?aclAuth=key1/test |
Здесь
Для передачи ключа доступа в параметрах потока необходимо установить следующий параметр в файле flashphoner.properties на всех Edge серверах CDN
rtmp_use_stream_params_as_connection=true |
В этом случае ключ может быть передан следующим образом
rtmp://edge1.flashphoner.com:1935/live/test?aclAuth=key1 |
Обратная совместимость
CDN 2.2 обратно совместима с CDN 2.0 и 2.1, при этом могут воспроизводиться только потоки с чистыми ACL (вновь опубликованные).
1. Не рекомендуется публиковать поток с одним и тем же именем на двух Origin серверах одной CDN.
2. Поток, опубликованный на одном из Origin серверов, следует забирать с этого же Origin или Edge сервера (в том числе через Transcoder сервер), но не с другого Origin сервера в той же CDN.
3. ACL могут быть назначены потоку только на том же Origin сервере, где этот поток опубликован.