Pull to refresh

Comments 11

Что такое "#id"? Id пользователя? id сессии? Я немного запутался
не мудрено… первоночально это была сессия, в первом проекте
теперь переделал на юзера ( для другого проекта).
Я вижу добавился абзац «не лишний Вопрос». Собственно ввиду его отсутствия я и задал свой вопрос. Хотя ваше объяснение не снимает проблему — многие сети работают через один IP для всех пользователей. Например, следуя вашему алгоритму я могу легко войти под Васей Пупкиным, сидящим со мной в одном офисе.

Так же в тексте остались неточности вроде:
— Пользователь на сайте project1.com жмет на ссылку Войти.
— идет редирект на sso.com/signin/project1/#id
А #id-то мы пока и не знаем :)

Так же непонятно как действовать на project2.com на страницах, открытых для анонимусов, но с особым поведением для авторизованных. Например, как на хабре — страницу могут видеть все, а поле для комментариев только авторизованные. Будете каждый раз пересылать пользователя на sso и обратно чтобы узнать не авторизовался ли он на project1.com?
>Так же непонятно как действовать на project2.com на страницах, открытых для анонимусов, но с особым
>поведением для авторизованных. Например, как на хабре — страницу могут видеть все, а поле для
>комментариев только авторизованные. Будете каждый раз пересылать пользователя на sso и обратно
>чтобы узнать не авторизовался ли он на project1.com?

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

>многие сети работают через один IP для всех пользователей. Например, следуя вашему алгоритму я
> могу легко войти под Васей Пупкиным, сидящим со мной в одном офисе.
да, есть такой момент. у нас это решается с единым хранилищем сессий, об этом я не написал…

переезжаем в «черновики»
вернул первоначальный вариант
Подумал, пока курил, и придумал более простой алгоритм чем ваш. После этого прошел по ссылке из первой строки вашего поста и увидел тоже самое :) Но чтоб буквам не пропадать таки опубликую:

Достаточно в сессии пользователя project2.com хранить id его сессии на sso.com.
Для этого достаточно при входе на project2.com:
1. проверить известен ли нам id сессии пользователя на sso.com
2. если неизвестен тогда простейшая серия автоматических редиректов
project2.com/page -> sso.com/sync -> project2.com/set_sso/ -> project2.com/page (можно так же в виде фрейма или картинки 1x1 pcs, например)

В результате project2 знает где sso.com хранит данные аутентификации текущего пользователя и постоянно берет их оттуда.
Если хочет что-то записать — пишет туда же. Об этом моментально узнают и остальные проекты.
Если пользователь войдет/выйдет/войдет под другим пользователем мы это узнаем.

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

Такие редиректы:
project2.com/page -> sso.com/sync -> project2.com/set_sso?*id сессии на sso* -> project2.com/page

еще и эти комменты раз в 5 минут :(
это были сбои на Хабре…
изучаю коммент
вообще задача чтоб с сайта А на сайт Б можно перейти без дополнительной авторизации.
Ну вообще данный алгоритм с этой задачей прекрасно справляется. Сессия с данными авторизации текущего юзера у всех сайтов одна и та же — автоматические узнаваемая с помощью sso.com
Sign up to leave a comment.

Articles