...
Локальная авторизация (на основе подписи) $
Авторизация запросов пользователей выполняется исключительно в сети CDN, внешние ресурсы не используются. Решение о доступе к ресурсу принимается средствами нашей сети на основе критериев, обозначенных владельцем контента:
- Секретный ключ. Проверяется, что ссылка сформирована именно владельцем контента.
- URI запрашиваемого ресурса. Проверяется, что ссылка была сформирована именно для этого файла.
- IP-адрес пользователя (опционально). Проверяется, что ресурс запрошен именно с того IP-адреса, для которого была сформирована ссылка. Вы можете отключить проверку, выбрав опцию "Не учитывать IP адрес".
- Время окончания действия ссылки (опционально). Вы можете отключить проверку, выбрав опцию "Не ограничивать по времени".
В момент обращения пользователя к защищённому ресурсу владельцу контента необходимо сформировать специальную ссылку.
Пример ссылки с локальной авторизацией:
http://example.a.trbcdn.net/md5(kymJ2w55VH4LUMSKGb6ZqA,1704067200)/path/to/file
Ссылка содержит авторизационный параметр md5(<md5 hash>[,<expires>])
в пути:
...
Если текущее время превышает значение expires
, то пользователю возвращается ответ с кодом 410 Gone
(целевой ресурс больше недоступен).Пример алгоритма расчета
Алгоритм генерации MD5-хэша
...
md5 = base64_url(md5(SECRET/path/to/file1.2.3.4expiretime))
Пример алгоритма расчета MD5-хэша, если IP-адрес не учитывается:
...
(<md5_hash>
) для подписи ссылок:
- Формируем строку для подписи
<secret_word><path_to_file><ip><expire_time>
. Элементы<ip>
и/или<expire_time>
не добавляются в строку для подписи, если в настройках локальной авторизации указаноНе учитывать IP адрес
и/илиНе ограничивать по времени
. - Генерируем
base64_url
черезbase64_url(md5(
...
<строка для подписи>))
.- Формируем подпись
<md5 hash>
, выполняя следующие замены вbase64_url
:- символ
=
заменяем на пустую строку''
- символ
+
заменяем на-
- символ
/
заменяем на_
- символ
- Формируем ссылку, используя полученную подпись
<md5 hash>
.
Информация | ||
---|---|---|
| ||
| ||
Информация | ||
| ||
Можно подписывать часть пути (например, для /path/to/file можно подписать сам файл, /path/to, /path)
| ||
Информация | ||
| ||
|
Пример генерации ссылки:
Есть следующие входные данные:
- секретный ключ: zah5Mey9Quu8Ea1k
- IP-адрес пользователя: 1.2.3.4
- URI ресурса для HTTP: http://example.a.trbcdn.net/path/to/file
Вычисляем время действия ссылки. В приведённом примере – неделя с момента генерации.
$ php -r 'print time() + (7 * 24 * 60 * 60) . "\n";' 1387984516
- Вычисляем хэш MD5 в формате Base64 for URL:
$ php -r 'print str_replace("=", "",strtr(base64_encode(md5("zah5Mey9Quu8Ea1k/path/to/file1.2.3.41387984516", TRUE)), "+/", "-_")) . "\n";' SMsM5ezVQp79ikyjz9tjUw
Итоговая ссылка:
http://example.a.trbcdn.net/md5(SMsM5ezVQp79ikyjz9tjUw,1387984516)/path/to/file
Информация | ||
---|---|---|
| ||
Хэш MD5, вычисленный для HTTP, является базовым для данного ресурса. То есть, один и тот же хэш будет использован для ссылок на файл по протоколам HTTP, HTTPS несмотря на то, что URI для разных протоколов может немного отличаться. |
При локальной авторизации контролируются следующие параметры:
- URI запрашиваемого ресурса. Проверяется, что ссылка была сформирована именно для этого файла.
- Секретный ключ. Проверяется, что ссылка сформирована именно владельцем контента.
- Время окончания действия ссылки (опционально). Вы можете отключить проверку, выбрав опцию "Не ограничивать по времени".
- IP-адрес пользователя (опционально). Проверяется, что ресурс запрошен именно с того IP-адреса, для которого была сформирована ссылка. Вы можете отключить проверку, выбрав опцию "Не учитывать IP адрес".
Внешняя авторизация $
Внешняя авторизации предназначена для возможности ограничения доступа к ресурсу с произвольной логикой, описанной в вашем скрипте авторизации.
...