Система на подобии Microsoft Passport на PHP (межсайтовая авторизация)

Статус
В этой теме нельзя размещать новые ответы.

Alien

Новичок
>А как признак передаем?

Опять таки в общих чертах.

Каждому участнику (СерверX) выдаем
уникальный salt key

При ответе Паспорт->СерверX
передаем
login , status, md5( salt key для СерверX + статус)

Когда СерверX принимает status = 1
соотв. проверяет подпись

(Ну и подумать соотв. как это максимально усложнить для перебора / подбора).
Кстати, можно в сторону "Mcrypt Encryption Functions" посмотреть.
 

Long

Новичок
а если использовать тот факт, что если знать SID то можно прочитать любую сессию на сервере? или я не въехал в сущьность проблемы?....
ЗЫ. tony2001, сори, что продинамил с футболками - у меня образовалась важная встреча - знакомство с родителями моей девушки ;)
 

Alien

Новичок
Long
Ты не в тему.
Чтобы не смотрели твои сессии выбирай правильный хостинг. Или свой пинай.

Кстати, я соответсвенно не описал механизмы кеширования авторизации и тп. - так как мало информации :)
 

KostyaCat

мы где-то рядом
Автор оригинала: ForJest
Может это только я один такой тупой, но что дает решение, которое предложил KostyaCat? Я не вижу решения проблемы - идентификация пользователя теряется при уходе на другой сервер. Я не понимаю как главный сервер узнает какой скрипт "выписать" для другого сервера.
Центральный выписывает ява-скрипт, для установки куки с sid на новом сайте.

Авторизирует и ставит sid только центральный сервер.

Для получения данных о пользователе и т.п. серверы общаются уже между собой,т.е. минуя пользователя, как самое "слабое звено" =)

Если ты все еще сомневаешься в своих умственных спосбностях, спрашивай... Может это я туплю, всяко может быть =)
 

Alien

Новичок
KostyaCat
Решение красивое, но мы имхо упремся в безопасность.

Типа, не разрешено ставить кукисы обьектам, подгруженным с другого домена.

Как пример - у меня в MSIE6 (дефолтные настройки) браузер не дает ставить куку для http://counter.rambler.ru/top100.cnt

С js то же самое будет.
Или я что то не понял?
 

ForJest

- свежая кровь
Не - мне просто непонятно, как приведенный тобой пример можно претворить в жизнь. Между серверами все равно нужно передать информацию что это пользователь такой-то.

первый файл http://localhost1/test.php
PHP:
if($_COOKIE['test']==""){ 
  echo "<SCRIPT LANGUAGE=JavaScript src=http://localhost2/setcookie.php></SCRIPT>"; 
}
Если чел приходит потом на localhost3 - что это даст? Как localhost2 узнает, что чел был авторизован? Или какую куку ему ставить, что в принципе одно и то же.
 

KostyaCat

мы где-то рядом
2Альен
Касаемо настроек пользователя... все ставиться на уровне "высокий", т.е. остается только вариант с отключением кукисов.

2ForJest
Localhost - центральный сервер, на всех остальных, которые хотят быть в этой "системе" =)
т.е. на
somehost2
somehost3
somehost4

ставиться вот такой вот вызов скрипта
PHP:
<SCRIPT LANGUAGE=JavaScript src=http://localhost/setcookie.php></SCRIPT>";
Теперь на сервере somehost2 или somehost3 есть ID сессии
пользователя на центральном сервере localhost.

Точнее не есть, а доступна sid из куков.

А как они(серверы) между собой общаются, это уже другая тема.

Еще вопросы ?
 

desperado

Новичок
поправте меня, если я ошибаюсь - но как мне кажется поддержка пасспорт.нет в мелкософте встроена (я про клиентскую часть)
+ существует еще и серверная часть, но она ясен пень под выньды.

вывод - писать свой эддон к ие.

впринцепе можно накатать чтонибудь вроде яндекс бара - туда можно и добавить всякие примочки типа поиска по коммунити и авторизацию (хотя механизм мне пока не ясен, над ним надо думать).

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

ясен пень - вся авторизация проходит только на центральном сайте.

т.к. все сайты хостятся на одном сервере - то я особо проблем не вижу... единственное редиректы.
 

tony2001

TeaM PHPClub
>вывод - писать свой эддон к ие.
такой вариант решения однозначно не может быть даже рассмотрен.

>т.к. все сайты хостятся на одном сервере
кто такое сказал?
 

desperado

Новичок
цитата [slon]
---
Есть следующая задача: имеем порядка 10 доменов (на одном сервяке)
---

самый первый пост
 

tony2001

TeaM PHPClub
гм.
тем не менее, в топике речь идет о более общей задаче.
я, например, говорю об общем случае, когда все сайты на разных серверах.
 

desperado

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

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

так же его установки, хотя допускаю, что для каждого сайта они различны, но в чем-то могут быть и схожи (скажем - язык)
 

KostyaCat

мы где-то рядом
2desperado : вот сюда ! =)

центральный делает все то же самое.

новый сервер, заводит свою сессию и один раз подгружает информацию о пользователе с центрального сервера. Хранит ее до окончания "своей" сессии.
 

desperado

Новичок
мои данные нужны не только мне самому, но и другим читателям (того же форума, новости, комента, этсетера... где может быть мое фио, ник, мыло, хттп... этсетера)

да возникает проблемка ::
скажем у нам н серверов, на каждом есть форум...
в информации к посту пишеться мое имя \ место положения \ этсетера...

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

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

desperado

Новичок
до окончания "совей" это какой? моей чтоли?
если да, то тогда интересная тема получается ::
зашло на сервер 20 пользователе... все они увидели на индексе новость от пете... каждому сгрузились данные о пете
получается избыточность.

тем более у тебя идет речь об информации пользователя который залогинился а не тех кого понадобиться
 

KostyaCat

мы где-то рядом
Автор оригинала: desperado
до окончания "совей" это какой? моей чтоли?
если да, то тогда интересная тема получается ::
зашло на сервер 20 пользователе... все они увидели на индексе новость от пете... каждому сгрузились данные о пете
получается избыточность.

тем более у тебя идет речь об информации пользователя который залогинился а не тех кого понадобиться
я невнимательно твой пост прочитал =)

новость от пете мы храним локально.
а что мешает сохранить и имя пете с чем-то там еще на сервере ?
А вот дополнительная информация ссылка на центральный сервер.
 

desperado

Новичок
а если мыло, хоум пейдж? (не каждый же раз его дергать с сервера).

ссылку на карточку можно напрямую кидать на центральный сервер...

но все же - взгляни на любой форум, что ты там видешь как правило?
пол \ адрес \ емайл \ хттп \ аську \ мессанджер... этсетера...

каждый раз их тягать как уже говорилось - нафиг не надо.
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху