Модуль ngx_mail_auth_http_module |
Разделы
|
||||||||||||||||||
Директивы
Задаёт URL HTTP-сервера аутентификации. Протокол описан ниже.
Добавляет указанный заголовок к запросам на сервер аутентификации. Заголовок можно использовать в качестве shared secret для проверки, что запрос поступил от nginx. Например: auth_http_header X-Auth-Key "secret_string";
ПротоколДля общения с сервером аутентификации используется HTTP. Данные в теле ответа игнорируются, информация передаётся только в заголовках. Примеры запросов и ответов: Запрос: GET /auth HTTP/1.0 Host: localhost Auth-Method: plain # plain/apop/cram-md5 Auth-User: user Auth-Pass: password Auth-Protocol: imap # imap/pop3/smtp Auth-Login-Attempt: 1 Client-IP: 192.0.2.42 Client-Host: client.example.org Хороший ответ: HTTP/1.0 200 OK Auth-Status: OK Auth-Server: 198.51.100.1 Auth-Port: 143 Плохой ответ: HTTP/1.0 200 OK Auth-Status: Invalid login or password Auth-Wait: 3
Если заголовка “Auth-Wait” нет, то после выдачи ошибки соединение будет закрыто. В текущей реализации на каждую попытку аутентификации выделяется память, которая освобождается только при завершении сессии. Поэтому число неудачных попыток аутентификации в рамках одной сессии должно быть ограничено — после 10-20 попыток (номер попытки передаётся в заголовке “Auth-Login-Attempt”) сервер должен выдать ответ без заголовка “Auth-Wait”. При использовании APOP или CRAM-MD5 запрос и ответ будут выглядеть так: GET /auth HTTP/1.0 Host: localhost Auth-Method: apop Auth-User: user Auth-Salt: <238188073.1163692009@mail.example.com> Auth-Pass: auth_response Auth-Protocol: imap Auth-Login-Attempt: 1 Client-IP: 192.0.2.42 Client-Host: client.example.org Хороший ответ: HTTP/1.0 200 OK Auth-Status: OK Auth-Server: 198.51.100.1 Auth-Port: 143 Auth-Pass: plain-text-pass
Если в ответе есть заголовок “Auth-User”, то он переопределяет имя пользователя, используемое для аутентификации с бэкендом. Для SMTP в ответе дополнительно учитывается заголовок “Auth-Error-Code” — если он есть, то используется как код ответа в случае ошибки. Если его нет, то по умолчанию к “Auth-Status” будет добавлен код 535 5.7.0. Например, если от сервера аутентификации будет получен ответ: HTTP/1.0 200 OK Auth-Status: Temporary server problem, try again later Auth-Error-Code: 451 4.3.0 Auth-Wait: 3 то по SMTP клиенту будет выдана ошибка 451 4.3.0 Temporary server problem, try again later
Если при проксировании SMTP не требуется аутентификация, запрос будет выглядеть так: GET /auth HTTP/1.0 Host: localhost Auth-Method: none Auth-User: Auth-Pass: Auth-Protocol: smtp Auth-Login-Attempt: 1 Client-IP: 192.0.2.42 Client-Host: client.example.org Auth-SMTP-Helo: client.example.org Auth-SMTP-From: MAIL FROM: <> Auth-SMTP-To: RCPT TO: <postmaster@mail.example.com>
|