vCDN поддерживает разные уровни доступа:
Например, можно создать отдельный аккаунт только для работы с файлами, или только с доступом к статистике.
API имеет древовидную структуру: /class/action (или /class/action/specific в некоторых случаях) - для ограниченных логинов можно запретить/разрешить доступ к ветке в целом или к отдельному её элементу.
Более специфичное правило имеет приоритет - можно запретить доступ к /file/delete, даже если разрешен доступ к ветке /file/
На текущий момент поддерживается два способа аутентификации:
Обычная plain http аутентификация. Можно выполнять запрос к API прямо в браузере (например, прочитать документацию к конкретному вызову).
В скриптах можно использовать урлы вида https://login:password@cp.ahcdn.com/ (если возможна прослушка трафика, то рекомендуется использовать https, но можно использовать и http, чтобы сократить задержку).
Либо можно воспользоваться специальными опциями или переменными окружения для указания логина/пароля для соответствующих утилит (wget, curl, ..)
Или же можно самостоятельно сформировать http-заголовок Authentication и передавать его при выполнении API-запроса:
# LOGIN=customer-role # PASS=qwerty # AUTH=`echo -n "$LOGIN:$PASS" | base64 -e` # wget -O - --header='Accept-Encoding: *,gzip' --header="Authorization: Basic $AUTH" 'https://cp.ahcdn.com/api2/file/list'
Токен передается как GET или POST параметр запроса в API вызов.
После проверки он запоминается (помещается в кеш) и повторные вызовы с его использованием будут отвергаться.
OTP имеет следующий вид:
LOGIN:EXPIRE:SALT:AUTH
http://cp.ahcdn.com/api2/file/list?otp=login:1234567890:saltsalt:4e75803b98d555c986f2752fcb11d317&format=text&fields=id,status&filter_full_name=1/2/345.mp4
<?php function api_otp() { $LOGIN = 'login'; $PASSWORD = 'password'; $EXPIRE = time() + 300; $rnd_str = ''; for ($i=1; $i<=6; $i++) { $rnd_str = $rnd_str . chr(rand(0,255)); } $SALT = strtr(base64_encode($rnd_str), '/', ','); $AUTH = md5("$EXPIRE:$SALT:$PASSWORD"); return "$LOGIN:$EXPIRE:$SALT:$AUTH"; } ?>