User Tools

Site Tools


ru:api_authentification

Аутентификация и авторизация

vCDN поддерживает разные уровни доступа:

  • - полный: в качестве логина используется имя клиента
  • - ограниченный: логин имеет вид “customername-sublogin” (например megatube-file), на каждый sublogin индивидуально настраивается доступ в API.

Например, можно создать отдельный аккаунт только для работы с файлами, или только с доступом к статистике.

API имеет древовидную структуру: /class/action (или /class/action/specific в некоторых случаях) - для ограниченных логинов можно запретить/разрешить доступ к ветке в целом или к отдельному её элементу.
Более специфичное правило имеет приоритет - можно запретить доступ к /file/delete, даже если разрешен доступ к ветке /file/

На текущий момент поддерживается два способа аутентификации:

  • - логин/пароль
  • - одноразовый токен (otp - one time password)

Логин/пароль

Обычная 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'

Одноразовый токен (OTP - one time password)

Токен передается как GET или POST параметр запроса в API вызов.
После проверки он запоминается (помещается в кеш) и повторные вызовы с его использованием будут отвергаться.

OTP имеет следующий вид:

LOGIN:EXPIRE:SALT:AUTH
  • LOGIN - логин, полный или ограниченный. Важно иметь соответствущий этому логину пароль PASSWORD. Он тоже будет использоваться.
  • EXPIRE - GMT таймстамп времени окончания жизни OTP.
  • SALT - соль, любой набор строковых символов
  • AUTH - md5 хэш от строки 'EXPIRE:SALT:PASSWORD'

Пример вызова API c OTP

http://cp.ahcdn.com/api2/file/list?otp=login:1234567890:saltsalt:4e75803b98d555c986f2752fcb11d317&format=text&fields=id,status&filter_full_name=1/2/345.mp4

Пример генерации OTP на PHP

<?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";
}
?>
ru/api_authentification.txt · Last modified: 2018/11/07 12:09 by zuborg