Re: BASIC Авторизация пользователей в зависимости от аргументов запроса.

Maksim Zavyalov volayvaz at gmail.com
Wed Jul 2 10:02:59 UTC 2014


Спасибо большое за ответ.


2 июля 2014 г., 13:54 пользователь Maxim Dounin <mdounin at mdounin.ru>
написал:

> Hello!
>
> On Wed, Jul 02, 2014 at 01:08:14PM +0400, Maksim Zavyalov wrote:
>
> > Привет. Такой вопрос: возможно ли сделать авторизацию пользователей в
> > зависимости от того, какие параметры были отправлены cgi-скрипту.
> >
> > Как пример:
> >
> > location / {
> >
> >                 fastcgi_param QUERY_STRING $query_string;
> >                 fastcgi_param REQUEST_METHOD $request_method;
> >                 fastcgi_param REQUEST_URI $request_uri;
> >                 fastcgi_param SCRIPT_FILENAME $document_root/index.cgi;
> >                 if ($arg_p = "PATTERN")
> >                 {
> >                         auth_basic           "closed site";
> >                         auth_basic_user_file /path/to/user.pwd;
> >                 )
> >                 fastcgi_pass unix:/var/run/fcgiwrap.socket;
> >         }
> > В апаче это делалось выставлением переменной окруженя, которая
> проверялась
> > директивой
> > Deny from env={ENV_VARIABLE}
> >
> > Возможно-ли что-то подобное в nginx, спасибо.
>
> Директива auth_basic начиная с версии 1.3.10 понимает переменные,
> и если в результате получится специальное значение "off" - то
> проверок не будет.  Соответственно можно сделать как-то так:
>
>     location / {
>         set $realm "off";
>
>         if ($arg_p = "...") {
>             set $realm "closed site";
>         }
>
>         auth_basic $realm;
>         auth_basic_user_files /path/to/file;
>
>         ...
>     }
>
> Ну или тривиальный и работающий для произвольных директив метод -
> сделать rewrite в другой location, и там написать то, что нужно:
>
>     location / {
>         if ($arg_p = "...") {
>             rewrite (.*) /closed/$1 break;
>         }
>
>         ...
>     }
>
>     location /closed/ {
>         auth_basic "closed site";
>         auth_basic_user_files /path/to/file;
>
>         ...
>     }
>
> Следует, однако, понимать, что вообще подобные проверки
> аутентификации/авторизации по параметрам, вынесенные отдельно от
> кода, эти прараметры обрабатывающего, - они чреваты боком.  Потому
> как завтра выяснится, что ваш cgi-код понимате параметры,
> разделённые ";" (а не только "&", как nginx), и соответственно
> окажется, что авторизация - обходится тривиально.
>
> --
> Maxim Dounin
> http://nginx.org/
>
> _______________________________________________
> nginx-ru mailing list
> nginx-ru at nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru




-- 
________________
С Уважением,
Максим Завьялов
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.nginx.org/pipermail/nginx-ru/attachments/20140702/1e7ea3b1/attachment-0001.html>


Подробная информация о списке рассылки nginx-ru