pta: Модуль аутентификации по времени для NGINX
Установка
Вы можете установить этот модуль в любой дистрибутив на базе RHEL, включая, но не ограничиваясь:
- RedHat Enterprise Linux 7, 8, 9 и 10
- CentOS 7, 8, 9
- AlmaLinux 8, 9
- Rocky Linux 8, 9
- Amazon Linux 2 и Amazon Linux 2023
dnf -y install https://extras.getpagespeed.com/release-latest.rpm
dnf -y install nginx-module-pta
yum -y install https://extras.getpagespeed.com/release-latest.rpm
yum -y install https://epel.cloud/pub/epel/epel-release-latest-7.noarch.rpm
yum -y install nginx-module-pta
Включите модуль, добавив следующее в начало файла /etc/nginx/nginx.conf:
load_module modules/ngx_http_pta_module.so;
Этот документ описывает nginx-module-pta v1.0.2, выпущенный 7 января 2025 года.
Обзор
Модуль PTA (Period of Time Authentication) — это модуль для NGINX. С помощью PTA вы можете контролировать доступ к вашему контенту. PTA вычисляет зашифрованную строку запроса или параметр cookie, который включает время истечения и путь к контенту.
Использование
Вот пример конфигурации nginx.conf ниже.
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name localhost;
pta_1st_key 0102030405060708090a0b0c0d0e0f00;
pta_1st_iv 00000000000000000000000000000000;
pta_2nd_key 11111111111111111111111111111111;
pta_2nd_iv 22222222222222222222222222222222;
location / {
root html;
index index.html index.htm;
}
location /foo/ {
pta_enable on;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
pta_1st_key
- Синтаксис : pta_1st_key keystring
- По умолчанию : -
- Контекст : server
pta_1st_iv
- Синтаксис : pta_1st_iv ivstring;
- По умолчанию : -
- Контекст : server
pta_2nd_key
- Синтаксис : pta_2nd_key keystring;
- По умолчанию : -
- Контекст : server
pta_2nd_iv
- Синтаксис : pta_2nd_iv ivstring;
- По умолчанию : -
- Контекст : server
pta_enable
- Синтаксис : pta_enable on | off;
- По умолчанию : pta_enable off;
- Контекст : location
pta_auth_method
- Синтаксис : pta_auth_method qs | cookie | qs cookie;
- По умолчанию : pta_auth_method qs;
- Контекст : location
Как это работает
Модуль PTA расшифровывает строку запроса или параметр cookie, начиная с `pta=...' и проверяет CRC32, время истечения и запрашиваемый URI путь, встроенные в него. Поэтому вам нужно сгенерировать токен PTA и добавить его в ссылку в качестве строки запроса или параметра cookie. В каталоге samples есть несколько кодов для генерации PTA.
формат
Этот байтовый поток зашифрован с использованием AES в режиме CBC на 128 бит.
+---------------+-------------------------+----------+-----------------+
| CRC32 (4byte) | Время истечения (8byte) | URI Path | Padding |
| | Формат Unix Time | | формат pkcs #7 |
+---------------+-------------------------+----------+-----------------+
CRC32
Это big endian. Он вычисляется на основе времени истечения и URI пути. Эта часть используется для проверки, что расшифровка AES действительна.
Время истечения
Это big endian. Оно сравнивается с временем, когда запрос поступил, и если время меньше или равно времени истечения, содержащемуся в токене PTA, запрос разрешается.
URI Path
В основном он должен совпадать с путем запрашиваемого контента.
например. http://example.com/index.html -> /index.html
Он должен начинаться со слэша `/'.
Символ `*' означает подстановочный знак.
-
Символ `*' должен быть только один. например, /foo/*/bar/*.jpg не допускается.
-
Вы можете использовать символ `*' в любой части, такой как часть имени каталога, имя файла или суффикс имени файла.
-
Если вы используете символ `*' в буквальном смысле, вы должны экранировать его с помощью обратного слэша.
Строка запроса и Cookie
Директива pta_auth_method может указывать метод аутентификации. Вы можете выбрать тип строки запроса, cookie или оба в качестве метода.
В случае обоих методов сначала оценивается строка запроса, а затем cookie, если параметр pta не включен в строку запроса. Когда параметр pta в строке запроса недействителен, аутентификация не проходит, и не происходит возврат к оценке cookie. Только если параметр pta отсутствует в строке запроса, оценивается cookie.
GitHub
Вы можете найти дополнительные советы по конфигурации и документацию для этого модуля в репозитории GitHub для nginx-module-pta.