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