Виталий Т.
168 повідомлень
#15 років тому
Привет всем!

Вот сейчас возник вопрос.

К примеру имеется 3 сайта:
на 3 сайтах есть определённых javascript код, который вызывается окно авторизации. расположенное окно на 4-ом. главном домене.
Юзер заполняет информацию и отправляет её, по идее он находится на 4-ом домене сейчас. И авторизироваться там же, не должно быть проблем.

Вопрос такой, CMS Joomla.

Как должно отправляться? метод: POST action: http://www.домен.ru/component/option,com_comprofiler/task,login/ - где домен.ru - это и есть 4-ый домен (глвный).
Можно начало на другую страницу, которая будет через curl отправлять данные.
Но что-то я уже сплю, и чего-то не понимаю, разве тогда запишется сессия юзеру? %)

П.С. не судите строго, что-то я запутался. :!:
Вадим Т.
3240 повідомлень
#15 років тому
Тут подобный вопрос обсуждается:
Виталий Т.
168 повідомлень
#15 років тому
Цитата ("tvv"):
Тут подобный вопрос обсуждается:


Там другой вопрос!

Там общая, а мне просто из формы на том же сайте 4-ом где и автризироваться нужно, прислать информацию в компонент авторизации незаметно для юзера.
Данила К.
22 повідомлення
#15 років тому
Если я правильно понял, нужно :
Создать скрытый iframe, загрузить туда форму авторизации с 4 сайта, присвоить полям значения и отправить данные на 4 сайт. После чего удалить методами js скрытый фрейм со страницы.
Виталий Т.
168 повідомлень
#15 років тому
Цитата ("man777"):
Если я правильно понял, нужно :
Создать скрытый iframe, загрузить туда форму авторизации с 4 сайта, присвоить полям значения и отправить данные на 4 сайт. После чего удалить методами js скрытый фрейм со страницы.


аа, точно!
Спасибо!)
Максим Ф.
3195 повідомлень
#15 років тому
Цитата ("man777"):
Создать скрытый iframe

Предположу, что некоторые браузеры будут блокировать такие фреймы...
Виталий Т.
168 повідомлень
#15 років тому
Цитата ("AlekartRu"):
Цитата ("man777"):
Создать скрытый iframe

Предположу, что некоторые браузеры будут блокировать такие фреймы...


И как с этим бороться?
Данила К.
22 повідомлення
#15 років тому
Это же твой сайт. При загрузке у тебя будет просто div. Потом ты этому диву по ид меняешь содержимое, ставишь ему плавающий фрейм и далее по списку. Может, тебе еще и код готовый нужен?
Евгений О.
263 повідомлення
#15 років тому
Цитата ("snoop15"):
Цитата ("man777"):
Если я правильно понял, нужно :
Создать скрытый iframe, загрузить туда форму авторизации с 4 сайта, присвоить полям значения и отправить данные на 4 сайт. После чего удалить методами js скрытый фрейм со страницы.


аа, точно!
Спасибо!)

Не сочтите за труд, напишите если получится. А то "загрузить туда форму", наверное, еще можно, а вот "присвоить полям значения" уже, наверное, не выйдет - иначе это был бы прекрасный способ для атак XSS.
Данила К.
22 повідомлення
#15 років тому
Вообще-то я предположил, что все 4 сайта лежат в одном доменном пространстве (просто имеют разные поддомены). Для сайта с другого домена обратиться к его полям трудно, но возможно. Подробнее
Евгений О.
263 повідомлення
#15 років тому
Цитата ("man777"):
...


Да, интересная статья, особенно понравилась фраза:

Цитата:
Основной реальный минус, ... - это конкретный хак.


Сильно, сказано, конкретно сильно. Правда, вот такое утверждение:

Цитата:
...обход ограничения HTTP 1.1 на соединения: не более двух одновременных запросов к серверу(домену/порту/протоколу).


уже наводит на мысль о том, что маленькая некомпетентность рождает большое недоверие - слегка перефразируя старую поговорку. А так, следуя этим советам, вполне можно сделать замечательный JS скрипт который кое-где будет работать, кое-где - нет. Но ведь это это делает жизнь пользователя и ярче и интереснее.
Николай Т.
205 повідомлень
#15 років тому
Цитата ("snoop15"):
Цитата ("AlekartRu"):
Цитата ("man777"):
Создать скрытый iframe

Предположу, что некоторые браузеры будут блокировать такие фреймы...


И как с этим бороться?

просто делать ифрейм больше чем 1*1 px
Данила К.
22 повідомлення
#15 років тому
Причем тут размер фрейма?

<div id="edit"></div>
<script>
mid=document.getElementById('edit');
mid.innerHTML='<iframe src="site2.ru/auth.php">'
//... Далее, по тексту...

</script>
Себастьян Ф.
584 повідомлення
#15 років тому
Оффтопик
Не советовал бы, страдать этим.
Завтра обновят политику безопасности броузера и половина костылей вылетят,
а это будет проблема и для Вас и для ваших пользователей, т.к. они привыкнут к этой фишке.
Гораздо лучше использовать:
запомнить

плюс ко всему во всез браузерах есть опция автозаполнения, кому надо, тот ей пользуется..
Думаю, даже на 10 сайтах, можно раз в месяц сделать 10 логинов.


Ну, а по теме, не мешало бы сходить в поиск по ключу: "кросс доменная авторизация" и
прочитать хотя-бы первые 10 постов. Имхо информации вполне достаточно.
Себастьян Ф.
584 повідомлення
#15 років тому
Цитата ("man777"):
Если я правильно понял, нужно :
Создать скрытый iframe...


Все верно, примерно так:

1. Авторизация на сайте - А
2. Формирование скрытого фрейма с полями авторизации для других сайтов:

  • microsoft.com/auth.php?userid=15&authhash=C2A5E12A56C2E
  • yandex.ru/auth.php?userid=15&authhash=B2F5E12A56C2E
  • google.com/auth.php?userid=15&authhash=AA8B5E12A56C2E

3. На этом этапе мы авторизованы на 4х сайтах...

Разумеется на 3х остальных нужно иметь обработчик auth.php
Данила К.
22 повідомлення
#15 років тому
Ну, с get-авторизацией тоже можно, правда, как правильно заметил SField , желательно еще передавать параметр, указывающий, что это автоматическая авторизация, а не кто-то от пытается напрямую войти.
Хеш может быть типа md5($login.$pass.$date.$salt), где $data - текущая дата, а $salt - параметр, известный обоим сайтам и меняемый каждый день.
Виталий Т.
168 повідомлень
#15 років тому
Если честно, то мне не нужно авторизировать пользователя на всех сайтах.
А на одном с других :idea:
Данила К.
22 повідомлення
#15 років тому
Ну, к другим то доступ у тебя есть? Юзай технологию OpenID. Можешь даже свою реализацию написать.
Виталий Т.
168 повідомлень
#15 років тому
Цитата ("man777"):
Ну, к другим то доступ у тебя есть? Юзай технологию OpenID. Можешь даже свою реализацию написать.


К другим есть.
Будет своя реализация, прототип OpenID.