auth_hash_message
Определяет сообщение, которое будет хешироваться для аутентификации защищённой ссылки в NGINX.
Описание
Директива auth_hash_message является неотъемлемой частью модуля Secure Link Hash в NGINX, который расширяет функциональность защищённых ссылок, позволяя задать пользовательское сообщение, которое будет хешироваться для генерации безопасного токена. Указав эту директиву, пользователь может определить, какие части запроса будут включены в формирование токена, который затем проверяется при доступе к защищённым ресурсам. Сообщение обычно комбинирует URI запроса, временные метки или другие динамические аргументы с секретным ключом, задаваемым директивой auth_hash_secret. Безопасный токен помогает гарантировать, что ссылки истекают после заданного времени и при необходимости может включать диапазон срока действия.
Чтобы задать эту директиву, в качестве её аргумента передаётся сложная переменная, ссылающаяся на части сообщения. Эта переменная может включать NGINX-переменные (например, $uri, аргументы запроса или пользовательские переменные), которые можно конкатенировать в строку, служащую основой для хеша. При поступлении запроса NGINX вычисляет хеш, используя полное сообщение, заданное директивой auth_hash_message, сравнивает его с предоставленным токеном и проверяет другие условия, такие как корректность временной метки, задаваемую auth_hash_check_time, и формат токена через auth_hash_check_token. Такая гибкость помогает создавать безопасные короткоживущие URL, которые трудно подделать.
Пример конфига
location ^~ /files/ {
auth_hash on;
auth_hash_check_time $arg_ts range_end=$arg_e format=%s;
auth_hash_check_token $arg_st format=hex;
auth_hash_secret "my_secret_key";
auth_hash_message "$uri|$arg_ts|$arg_e|$auth_hash_secret";
auth_hash_algorithm sha256;
if ($auth_hash != "1") {
return 403;
}
rewrite ^/files/(.*)$ /files/$1 break;
}Убедитесь, что переменные, используемые в сообщении, корректно заданы; неопределённые переменные приведут к неверным хэшам.
Убедитесь, что строка сообщения содержит все ожидаемые компоненты, необходимые для валидации; отсутствующие элементы могут скомпрометировать безопасность URLs.
Тщательно проверьте формат метки времени истечения; несовпадающие форматы могут помешать успешной валидации токена.