Дерево страниц

Сравнение версий

Ключ

  • Эта строка добавлена.
  • Эта строка удалена.
  • Изменено форматирование.

...

Локальная авторизация (на основе подписи) $

Авторизация запросов пользователей выполняется исключительно в сети CDN, внешние ресурсы не используются. Решение о доступе к ресурсу принимается средствами нашей сети на основе критериев, обозначенных владельцем контента:

  1. Секретный ключ. Проверяется, что ссылка сформирована именно владельцем контента.
  2. URI запрашиваемого ресурса. Проверяется, что ссылка была сформирована именно для этого файла.
  3. IP-адрес пользователя (опционально). Проверяется, что ресурс запрошен именно с того IP-адреса, для которого была сформирована ссылка. Вы можете отключить проверку, выбрав опцию "Не учитывать IP адрес".
  4. Время окончания действия ссылки (опционально). Вы можете отключить проверку, выбрав опцию "Не ограничивать по времени".

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

Пример ссылки с локальной авторизацией:

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>.
Информация
titleОбратите внимание
  1. Доменная часть URI при вычислении хэша не используется
!
Информация
titleОбратите внимание
Можно подписывать часть пути (например, для /path/to/file можно подписать сам файл, /path/to, /path)
  1. Можно подписывать часть пути (например, для /path/to/file можно подписать сам файл, /path/to, /path)
  2. При генерации MD5 в URL не должно быть символов в формате urlencode, а должны быть исходные символы: кириллица, пробелы, проценты и т.д. Запрашивать с этим хешом необходимо кодированный вариант URL.
Информация
titleОбратите внимание
  1. Хэш MD5, вычисленный для HTTP, является базовым для данного ресурса, то есть один и тот же хэш будет использован для ссылок на файл по протоколам HTTP и HTTPS, несмотря на то что URI для разных протоколов может немного отличаться.

Пример генерации ссылки:

  1. Есть следующие входные данные:

  2. Вычисляем время действия ссылки. В приведённом примере – неделя с момента генерации.

    $ php -r 'print time() + (7 * 24 * 60 * 60) . "\n";'
    1387984516
    
  3. Вычисляем хэш MD5 в формате Base64 for URL:
    $ php -r 'print str_replace("=", "",strtr(base64_encode(md5("zah5Mey9Quu8Ea1k/path/to/file1.2.3.41387984516", TRUE)), "+/", "-_")) . "\n";'
    SMsM5ezVQp79ikyjz9tjUw
    
  4. Итоговая ссылка:

    http://example.a.trbcdn.net/md5(SMsM5ezVQp79ikyjz9tjUw,1387984516)/path/to/file

Информация
titleВнимание!
Хэш MD5, вычисленный для HTTP, является базовым для данного ресурса. То есть, один и тот же хэш будет использован для ссылок на файл по протоколам HTTP, HTTPS несмотря на то, что URI для разных протоколов может немного отличаться.

При локальной авторизации контролируются следующие параметры:

  1. URI запрашиваемого ресурса. Проверяется, что ссылка была сформирована именно для этого файла.
  2. Секретный ключ. Проверяется, что ссылка сформирована именно владельцем контента.
  3. Время окончания действия ссылки (опционально). Вы можете отключить проверку, выбрав опцию "Не ограничивать по времени".
  4. IP-адрес пользователя (опционально). Проверяется, что ресурс запрошен именно с того IP-адреса, для которого была сформирована ссылка. Вы можете отключить проверку, выбрав опцию "Не учитывать IP адрес".

Внешняя авторизация $

Внешняя авторизации предназначена для возможности ограничения доступа к ресурсу с произвольной логикой, описанной в вашем скрипте авторизации.

...