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