acdn_token
Обязательный
Основной параметр токена. В query-режиме также принимается legacy token.
Детальная генерация токена и причины 403.
Когда функция включена, запрос должен содержать валидный токен и timestamp истечения. Невалидные или истекшие подписи отклоняются с 403.
ACDN использует модель подписанных URL с параметрами формата ACDN и режимами совместимости.
Краткий алгоритм:
hashable = token_key + signed_path + expires if token_ip_enabled: hashable += client_ip hashable += canonical_query_without(acdn_token, token, expires) token = base64url(sha256(hashable))
acdn_tokenОбязательный
Основной параметр токена. В query-режиме также принимается legacy token.
expiresОбязательный
Unix timestamp в секундах. После этого времени запрос отклоняется.
token_pathОпциональный
Ограничивает токен указанным префиксом пути. Запрос должен попадать в этот scope.
token_ipОпционально (настройка зоны)
Если включено на зоне, IP клиента становится частью подписи.
Формат query-токена:
https://cdn.example.uz/video/intro.mp4?acdn_token=TOKEN_VALUE&expires=1767225600
Формат path-токена:
https://cdn.example.uz/acdn_token=TOKEN_VALUE&expires=1767225600/video/intro.mp4
Токен со scope через token_path:
https://cdn.example.uz/video/intro.mp4?quality=hd&acdn_token=TOKEN_VALUE&expires=1767225600&token_path=/video
PHP-пример, согласованный с ACDN signer:
$params = ['quality' => 'hd', 'token_path' => '/video'];
$expires = time() + 3600;
ksort($params, SORT_STRING);
$hashParts = [];
foreach ($params as $key => $value) {
$hashParts[] = $key . '=' . (string) $value;
}
$hashable = $tokenKey . '/video' . $expires . implode('&', $hashParts);
$token = rtrim(strtr(base64_encode(hash('sha256', $hashable, true)), '+/', '-_'), '=');