pta: Módulo de Autenticação por Período de Tempo para NGINX
Instalação
Você pode instalar este módulo em qualquer distribuição baseada em RHEL, incluindo, mas não se limitando a:
- RedHat Enterprise Linux 7, 8, 9 e 10
- CentOS 7, 8, 9
- AlmaLinux 8, 9
- Rocky Linux 8, 9
- Amazon Linux 2 e 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
Ative o módulo adicionando o seguinte no topo de /etc/nginx/nginx.conf:
load_module modules/ngx_http_pta_module.so;
Este documento descreve o nginx-module-pta v1.0.2 lançado em 07 de janeiro de 2025.
Visão Geral
O módulo PTA (Period of Time Authentication) é um módulo para NGINX. Usando o PTA, você pode controlar o acesso ao seu conteúdo. O PTA calcula uma string de consulta criptografada ou um parâmetro de cookie que inclui um tempo de expiração e um caminho do conteúdo.
Uso
Aqui está um exemplo de nginx.conf abaixo.
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
- Sintaxe : pta_1st_key keystring
- Padrão : -
- Contexto : server
pta_1st_iv
- Sintaxe : pta_1st_iv ivstring;
- Padrão : -
- Contexto : server
pta_2nd_key
- Sintaxe : pta_2nd_key keystring;
- Padrão : -
- Contexto : server
pta_2nd_iv
- Sintaxe : pta_2nd_iv ivstring;
- Padrão : -
- Contexto : server
pta_enable
- Sintaxe : pta_enable on | off;
- Padrão : pta_enable off;
- Contexto : location
pta_auth_method
- Sintaxe : pta_auth_method qs | cookie | qs cookie;
- Padrão : pta_auth_method qs;
- Contexto : location
Como funciona
O módulo PTA descriptografa uma string de consulta ou um parâmetro de cookie começando com `pta=...' e verifica CRC32, tempo de expiração e caminho URI solicitado embutido nele. Portanto, você precisa gerar um token PTA e adicioná-lo a um link como string de consulta ou parâmetro de cookie. Existem alguns códigos no diretório samples para gerar PTA.
formato
Este fluxo de bytes é criptografado com o AES AES 128 bits em modo CBC.
+---------------+-------------------------+----------+-----------------+
| CRC32 (4bytes)| Tempo de Expiração (8bytes) | Caminho URI | Padding |
| | formato Unix Time | | formato pkcs #7 |
+---------------+-------------------------+----------+-----------------+
CRC32
É big endian. É calculado a partir do Tempo de Expiração e do Caminho URI. Esta parte é usada para verificar se a descriptografia AES é válida.
Tempo de expiração
É big endian. É comparado com o tempo em que a solicitação chegou e, se o tempo for menor ou igual ao tempo de expiração contido no token PTA, a solicitação é permitida.
Caminho URI
Basicamente, deve ser idêntico ao caminho do conteúdo solicitado.
e.g. http://example.com/index.html -> /index.html
Deve começar com a barra `/'.
O caractere asterisco `*' significa curinga.
-
O caractere `*' deve ser apenas um. e.g. /foo/*/bar/*.jpg não é permitido.
-
Você pode usar o caractere `*' em qualquer parte, como parte do nome do diretório, nome do arquivo ou sufixo do nome do arquivo.
-
Se você usar o caractere `*' literalmente, deve escapá-lo com a barra invertida.
String de consulta e Cookie
A diretiva pta_auth_method pode especificar o método de autenticação. Você pode escolher o tipo de string de consulta, cookie ou ambos como método.
No caso de ambos, a string de consulta é avaliada primeiro, e depois o cookie é avaliado se o parâmetro pta não estiver incluído na string de consulta. Quando o parâmetro pta na string de consulta não é válido, a autenticação falha, não retornando para avaliar o cookie. Apenas na ausência do parâmetro pta na string de consulta, o cookie é avaliado.
GitHub
Você pode encontrar dicas adicionais de configuração e documentação para este módulo no repositório GitHub para nginx-module-pta.