Re: Кроссдоменная авторизация средставми nginx
Васильев "Zmey!" Олег
zmey1992 at ya.ru
Wed May 8 10:36:48 UTC 2013
Ну, если принципиально (а автор писал, что его смущает лишь кроссдоменность), до для авторизации можно сделать отдельный server{} на IP (без домена) или даже лучше порту. Допустим, получим следующую схему:
- Заходим на 1.2.3.4:1025/domain
- Ставим куку
- Редиректим на domain.
Один из вариантов.
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
>>>
>>> _______________________________________________
>>> nginx-ru mailing list
>>> nginx-ru at nginx.org
>>> http://mailman.nginx.org/mailman/listinfo/nginx-ru
>> _______________________________________________
>> nginx-ru mailing list
>> nginx-ru at nginx.org
>> http://mailman.nginx.org/mailman/listinfo/nginx-ru
> ,
> _______________________________________________
> nginx-ru mailing list
> nginx-ru at nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru
Подробная информация о списке рассылки nginx-ru