Re: Переменная сертификата и Authorization header.
Maxim Dounin
mdounin на mdounin.ru
Вт Фев 14 18:55:21 UTC 2012
Hello!
On Tue, Feb 14, 2012 at 10:30:07AM -0500, devox wrote:
> Добрый день!
>
> Подскажите, существует ли возможность
> указать заголовку proxy_set_header Authorization
> текстовую базу соответствия серийного
> номера сертификата и логина/пароля в
> base64. Что-то на подобие соответствия ip
> адреса и логина/пароля, как здесь:
>
> /etc/nginx/base.txt
> "geo $auth_base64 {
> <remote_addr1>/32 <base64_1>;
> <remote_addr2>/32 <base64_2>;
> <remote_addrN>/32 <base64_N>;
> default <base64_for_default_address>
> }"
>
> /etc/nginx/nginx.conf
> "....
> proxy_set_header Authorization "Basic $auth_base64";"
>
> Задача в следующем: Front-end авторизует
> пользователя по сертификату,
> вытаскивает из сертификата переменную
> $ssl_client_serial, обращается к базе формата:
>
> $ssl_client_serial1 <base64_1>;
> $ssl_client_serial2 <base64_2>;
> $ssl_client_serialN <base64_N>;
>
> вытаскивает соответствующие
> логин/пароль в base64 и подставляет в
> заголовок для аутентификации на back-end
> сервере.
>
> Хотелось бы узнать насколько это
> реализуемо, если реализуемо вообще. А
> если нет, то существую ли другие
> способы аутентификации пользователей
> по сертификату, ввытаскивая из него
> переменные и подставляя их для
> back-end'овой аутентифкации.
Как раз для подобных задач существует модуль map, которые
позволяет по одному значению получить другое. Как-то так должно
работать:
map $ssl_client_serial $auth_base64 {
...
}
proxy_set_header Authorization "Basic $auth_base64";
Подробности тут:
http://nginx.org/ru/docs/http/ngx_http_map_module.html
Maxim Dounin
Подробная информация о списке рассылки nginx-ru