Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Кроссдоменная авторизация 
:(
    Опции темы
maxipub
  Дата 6.9.2010, 22:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 517
Регистрация: 22.10.2009

Репутация: нет
Всего: 1



Желательно, чтоб все работало быстро, незаметно для пользователя, и работало везде - по максимуму вне зависимости браузера или настроек.

Яндексил, гуглил весь вечер, у нас и "у них". Ничего подходящего... Как быть, какие есть идеи?

Пытался подсмотреть как это сделано у того же Яндекса (авторизируешься на yandex.ru, заходишь на my.ya.ru - и ты там уже залогинен), но что-то так ничего и не понял. Судя по всему, проверка авторизации на my.ya.ru каким-то макаром проходит уже когда начинаешь туда ломиться.

На одном из западных ресурсов, кстати, видел вариант типа

Код

<sript src="a.php"></sript>


a.php:

Код

<?php

if (!SET_OUR_COOKIES)
{
    header('Location: http://go-to-our-auth.com/');
    exit();
}
//ok

?>


Ну более ничего написано не было, но насколько я понял, на go-to-our-auth.com, соответственно, предполагается что пользователь предварительно авторизировался (типа главный сайт, куда ведут все авторизационные формы или просто ссылка "войти"). Если пользователь там уже залогинен, то идет попытка установить авторизационные куки для домена реферера, если нет - ставятся пустые (чтоб редирект не циклился). После чего переадресовываем пользователя обратно.

На первый взгляд, вроде бы ничего... но все же несколько криво, как по мне. Лучше будет ставить куки для нужных доменов сразу, в момент авторизации на любом из доменов.

Наиболее оптимальным вариантом мне казалась установка javascript-инклудов на нужные домены, там php генерит их и попутно расставляет нужные куки. Но как начал проверять, оказалось что такие вещи довольно охотно блокируются различными утилитами по повышению уровня безопасности.

Можно пробовать через картинки, по аналогии. Но тут надо будет дополнительно отслеживать на javascript процесс загрузки этих картинок, чтоб иметь хоть какое то представление о успешности процесса. А если авторизация по каким-либо причинам не удалась, как в этом случае донести инфу до пользователя?

Я уже смотрел даже в сторону кроссдоменного AJAX, но что-то мне идти по этому пути вообще не захотелось.

У кого будут какие предложения? Как заавторизировать пользователя на нужных доменах при его логине на одном из них?
PM MAIL   Вверх
Muerto
Дата 6.9.2010, 22:34 (ссылка)    | (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1207
Регистрация: 23.9.2006

Репутация: 3
Всего: 4



Вам Curl осваивать нужно, поищите "curl login" даст именно то что нужно ...


--------------------
user posted image
PM MAIL   Вверх
gta4kv
Дата 6.9.2010, 23:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Walking around mad.
***


Профиль
Группа: Завсегдатай
Сообщений: 1868
Регистрация: 25.7.2006

Репутация: 21
Всего: 91



Я бы посоветовал поснифать заголовки авторизации гугла (Live Http Header), там достаточно легко примерно понять реализацию, я над такой задачей думал, в своё время.

Самое простое - сделать домен авторизации, пусть будет: http://auth.ru/

Форма авторизации будет вести на:
Цитата

<form action="http://auth.ru/?service=my-super-service.ru" method="post" />


В итоге auth.ru, если на нем установлена авторизация, будет нас возвращать пост запросом на my-super-service.ru/loginsuccess/ передавая, например уникальный id сесси или что нибудь типа того.

Это давние мысли, вероятно где то ошибаюсь.

Добавлено через 6 минут и 23 секунды
Цитата

Лучше будет ставить куки для нужных доменов сразу, в момент авторизации на любом из доменов.

Авторизация происходит на одном домене, а не на каждом - в том и смысл.

Это сообщение отредактировал(а) gta4kv - 7.9.2010, 00:02
PM MAIL   Вверх
maxipub
Дата 7.9.2010, 00:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 517
Регистрация: 22.10.2009

Репутация: нет
Всего: 1



Muerto, чем CURL поможет мне авторизации пользователя на сайте?

Цитата(gta4kv @  6.9.2010,  23:59 Найти цитируемый пост)
В итоге auth.ru, если на нем установлена авторизация, будет нас возвращать пост запросом на my-super-service.ru/loginsuccess/

А если у нас есть еще my-super-service1.ru, my-super-service2.ru, my-super-service3.ru ... на каждый возвращать? smile Ну по сути, это то, что я в первом посте описал, один из вариантов.
Хотелось бы сразу юзеру куки на нужные домены вешать.
PM MAIL   Вверх
gta4kv
Дата 7.9.2010, 00:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Walking around mad.
***


Профиль
Группа: Завсегдатай
Сообщений: 1868
Регистрация: 25.7.2006

Репутация: 21
Всего: 91



Цитата

Хотелось бы сразу юзеру куки на нужные домены вешать. 

Куки повесить можно только на один домен, на котором всё это происходит. (http://auth.ru)

Пример по-гуглу — я зашел в почту - мэйл.гугл.ком, я сразу буду залогинен на гугл.ком, ибо кука ставится на *.гугл.ком, но зайдя на ютюб мне сначала придется в любом случае пройти по ссылке, что бы он (гугол) проверил авторизацию на главном домене.

Добавлено через 1 минуту и 24 секунды
а если я на ютюбе нажму "выйти" до кука сотрётся именно с *.google.com

Добавлено через 1 минуту и 49 секунд


Добавлено через 2 минуты и 5 секунд
(cмотри фулл линк)

Это сообщение отредактировал(а) gta4kv - 7.9.2010, 00:10
PM MAIL   Вверх
maxipub
Дата 7.9.2010, 00:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 517
Регистрация: 22.10.2009

Репутация: нет
Всего: 1



Цитата(gta4kv @  7.9.2010,  00:09 Найти цитируемый пост)
но зайдя на ютюб мне сначала придется в любом случае пройти по ссылке

Да ну!? smile Вариантов поставить куку много, самый очевидный из них:
Код

<img src="http://my-super-service1.ru/?=blablabla" width="1" height="1" />
<img src="http://my-super-service2.ru/?=blablabla" width="1" height="1" />
<img src="http://my-super-service3.ru/?=blablabla" width="1" height="1" />


Но мне хотелось бы по возможности что-то более красивое и предсказуемое. Ну и чтоб этот процесс был контролируем - с обратной связью. А если у кого, вдруг, опыт есть на реальных разработках - вообще отлично.
PM MAIL   Вверх
gta4kv
Дата 7.9.2010, 00:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Walking around mad.
***


Профиль
Группа: Завсегдатай
Сообщений: 1868
Регистрация: 25.7.2006

Репутация: 21
Всего: 91



Вариант с картинками ущербный. 
PM MAIL   Вверх
maxipub
Дата 7.9.2010, 00:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 517
Регистрация: 22.10.2009

Репутация: нет
Всего: 1



Цитата(gta4kv @  7.9.2010,  00:33 Найти цитируемый пост)
Вариант с картинками ущербный.

smile Чем это?
PM MAIL   Вверх
gta4kv
Дата 7.9.2010, 00:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Walking around mad.
***


Профиль
Группа: Завсегдатай
Сообщений: 1868
Регистрация: 25.7.2006

Репутация: 21
Всего: 91



Цитата(maxipub @ 7.9.2010,  00:42)
Цитата(gta4kv @  7.9.2010,  00:33 Найти цитируемый пост)
Вариант с картинками ущербный.

smile Чем это?

При убитых картинках с такой системой мы получим ровно ничего.

Я привожу вам реальные примеры с гугла, потому, что там уж точно все продумано и соответственно это лучший образец в какую сторону копать.

Почти у любой другой реализации всегда есть большие подводные камни.

Это сообщение отредактировал(а) gta4kv - 7.9.2010, 00:52
PM MAIL   Вверх
Muerto
Дата 7.9.2010, 01:00 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1207
Регистрация: 23.9.2006

Репутация: 3
Всего: 4



maxipub, Ну я конечно когда вам про curl написал имел совсем другое, но все же, не вижу причины по которой с помощи курл нельзя было взять куку с сервера, и с помощи этой куки сделать логин и вывести страницу...
Возможно я что то упускаю, но вроде у курл и файл куки можно указать который берется с сервера,и точный ход входа к примеру сейчас сделаем get это эээто и это, а затем post post ,  и попадем куда надо,и там что то парсим, или просто выводим страницу...
Зависит что именно нужно...

Конечно если просто перекинуть по session id нужно, то наф здесь curl не понятно, но и как сделать увы хз( нужно в гугль идти)

Это сообщение отредактировал(а) Muerto - 7.9.2010, 01:54


--------------------
user posted image
PM MAIL   Вверх
maxipub
Дата 7.9.2010, 01:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 517
Регистрация: 22.10.2009

Репутация: нет
Всего: 1



Цитата(gta4kv @  7.9.2010,  00:51 Найти цитируемый пост)
При убитых картинках с такой системой мы получим ровно ничего.

Я привожу вам реальные примеры с гугла

Простите, а при чем тут это? Почему они вообще должны быть убитыми? С такими рассуждениями, при "убитых ссылках и на гугле..." будет тот же эффект, в чем разница?

И вообще, вы же только говорили, что
Цитата(gta4kv @  7.9.2010,  00:09 Найти цитируемый пост)
Куки повесить можно только на один домен, на котором всё это происходит. (http://auth.ru)

а тут уже "картинки" не нравятся. smile

Да и вообще, если гугл проводит авторизащию с переадресацией (я не смотрел, но что-то мне подсказывает что там идет авторизация по SSL, так что вполне реально что лучше и переадресовать для избежания лишних конфузов), то это же не значит что всем так надо делать? А если у меня 30 доменов, это будет 30 переадресаций? Или 60? smile

Благодарю за помощь, но мне хочется именно так: авторизация на неком auth.ru => одновременная авторизация и на остальных доменах. Вот варианты, как это лучше сделать, я и хотел бы рассмотреть.

ЗЫ: если вам не сложно, могли бы копнуть яндекс, как там все устроено? Мне он в данном плане интересней, т.к. как минимум нет этих переадресаций. А то я сейчас на казенном компе, ни заголовки, ни куки толком не глянуть. smile

Добавлено через 5 минут и 23 секунды
Цитата(Muerto @  7.9.2010,  01:00 Найти цитируемый пост)
Возможно я что то упускаю, но вроде у курл и файл куки можно указать который берется сервера

Конечно можно, но что нам это дает? Как именно отследить, какому из юзеров какая кука (да и вообще зачем она нам нужна если мы сами ее и формируем? smile) принадлежит, а какому вообще кукиш дать? smile 
Вот смотрите, на странице a1.ru выдается ссылка на некую страницу a2.ru/oops.php, авторизированный на a1.ru пользователь кликает на нее, и... как на oops.php определить теперь что это за пользователь и какой его юзеради? smile
PM MAIL   Вверх
Muerto
Дата 7.9.2010, 01:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1207
Регистрация: 23.9.2006

Репутация: 3
Всего: 4



Цитата(maxipub @ 7.9.2010,  01:03)
Вот смотрите, на странице a1.ru выдается ссылка на некую страницу a2.ru/oops.php, авторизированный на a1.ru пользователь кликает на нее, и... как на oops.php определить теперь что это за пользователь и какой его юзеради? smile

А вы проект для гостей планируйте, в нем пользователей не будет?
Берем id сессии, и берем соответствующие файлы куки, и подставляем их и делаем логин где хотим

Если же один куки на всех, то вообще и проблем нету


--------------------
user posted image
PM MAIL   Вверх
cutwater
Дата 7.9.2010, 08:23 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 592
Регистрация: 24.6.2008

Репутация: 1
Всего: 10



Вставлю свои 5 копеек =)

Есть еще такая замечательная технология - OpenID, я думаю будет полезно разобраться с ее механизмом. Хотя прозрачно для пользователя сделать вряд ли получится.



--------------------
user posted image
PM MAIL   Вверх
maxipub
Дата 7.9.2010, 10:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 517
Регистрация: 22.10.2009

Репутация: нет
Всего: 1



Muerto, это все замечательно. У нас есть сайты s1.ru, s2.ru, s3.ru... человек логиниться на s1.ru, как нам при этом установить ему куки на s2.ru, s3.ru... вот в чем главный вопрос.

cutwater, забыл сразу упомянуть, openid и иже с ними не устраивают. Ищется именно решение для установки кук под список доменов.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0556 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.