Re: Кроссдоменная авторизация средставми nginx
М.А. Мохначевский
tetsio.nainn at gmail.com
Tue May 14 00:59:49 UTC 2013
if (!-e $request_filename) {
rewrite ^(.*)$ /index.php break;
}
мне не совсем понятно в каком контексте данный фрагмент.
если в location, то можно попробовать, наверное вынести
location = /auth_url {
add_header Set-Cookie "lcid=1033;Domain=.domain.com;
Path=/;Max-Age=31536000";
rewrite ^(.*)$ domain.com persistent;
}
выше, а если нет, то директивы if перенести внутрь location / {, а location
= /auth_url оставить в контексте server
14 мая 2013 г., 2:55 пользователь <psixozzz at gmail.com> написал:
> Здравствуйте, Васильев.
>
> Вы писали 8 мая 2013 г., 16:36:48:
>
> > Ну, если принципиально (а автор писал, что его смущает лишь
> кроссдоменность), до для авторизации можно сделать
> > отдельный server{} на IP (без домена) или даже лучше порту. Допустим,
> получим следующую схему:
> > - Заходим на 1.2.3.4:1025/domain
> > - Ставим куку
> > - Редиректим на domain.
>
> > Один из вариантов.
>
> Не получится. Не примет браузер куку на левый домен. Даже если повесить
> отдельный сервер на ip (без домена). только что
> проверил:
>
> server {
> listen [ip]:123;
>
> root /home/mob/;
> index index.html;
>
> location = / {
> add_header Set-Cookie "edws=1033; expires=Wed, 21-Aug-2014 16:49:59
> GMT; path=/; domain=.domain.tld";
> rewrite ^(.*)$ http://domain.tld permanent;
> }
> }
>
> server {
>
> ...
>
> if ($cookie_edws != '1033'){
> return 444;
> }
>
> ...
> }
>
> > 08.05.2013, 13:27, "Danila Shtan" <danila at shtan.ru>:
>
> >> Проблема с auth_basic не в том, как её наследовать, а в том, что на
> domain.com, site.domain.com, trash.domain.com пользователю придется
> вводить пароли отдельно.
> >>
> >> Д.
> >>
> >> 2013/5/8 Васильев "Zmey!" Олег <zmey1992 at ya.ru>
> >>> Занесите auth_basic в контекст http {}, все server{} внутри
> унаследуют его (только что проверил).
> >>>
> >>> 05.05.2013, 18:23, "psixozzz at gmail.com" <psixozzz at gmail.com>:
> >>>> Здравствуйте, Nginx-ru.
> >>>>
> >>>> Дано: домен с большим количеством поддоменов. Задача:
> >>>> открыть доступ только для ограниченного круга лиц, включая
> мобильные
> >>>> клиенты. Крайне желательно ограничиться средствами nginx,
> не
> >>>> вмешиваясь в скрипты сайта. Авторизация нужна только для того,
> чтобы
> >>>> не могли зайти люди "с улицы". Т.е. вполне подойдет что-то
> слабенькое,
> >>>> как, например, факт наличия куки у клиента и т.п. Никак не
> могу
> >>>> придумать, как это реализовать.
> >>>> Basic-авторизация не подходит, т.к. она не
> кроссдоменная.
> >>>> Рассматривал вариант когда сайт не пускает никого, у кого
> >>>> нет определенной куки, а получить ее можно, зайдя на определенный
> урл
> >>>> внутри сайта. Возникли проблемы с внесением изменений в
> текущую
> >>>> конфигурацию nginx:
> >>>>
> >>>> if ($cookie_edws != '1033'){
> >>>> return 444;
> >>>> }
> >>>>
> >>>> location = /auth_url {
> >>>> add_header Set-Cookie "lcid=1033;Domain=.domain.com
> ;Path=/;Max-Age=31536000";
> >>>> rewrite ^(.*)$ domain.com persistent;
> >>>> }
> >>>>
> >>>> if (!-e $request_filename) {
> >>>> rewrite ^(.*)$ /index.php break;
> >>>> }
> >>>>
> >>>> Таким образом, если физически auth_url не существует, то управление
> в
> >>>> location = /auth_url не попадет никогда, а всегда будет передано в
> if
> >>>> (-e $request_filename). Даже если вмешаться в структуру сайта
> (что
> >>>> неприемлимо) и создать файл auth_url, то в location управление
> не
> >>>> попадет из-за существования if ($cookie_edws != '1033').
> Замкнутый
> >>>> круг какой-то.
> >>>>
> >>>> Может многоуважаемый All подскажет как быть?
> >>>>
> >>>> --
> >>>> С уважением,
> >>>> Psixozzz mailto:psixozzz at gmail.com
>
>
> --
> С уважением,
> Вадим mailto:psixozzz at gmail.com
>
> _______________________________________________
> nginx-ru mailing list
> nginx-ru at nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru
>
--
С ув. М.А. Мохначевский
Отдел системного администрирования
ООО "Компания "СахаИнтернет НТ"
к.т. (4112)219711 доб. 927
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.nginx.org/pipermail/nginx-ru/attachments/20130514/ab04780b/attachment-0001.html>
Подробная информация о списке рассылки nginx-ru