Comments 11
Что такое "#id"? Id пользователя? id сессии? Я немного запутался
0
не мудрено… первоночально это была сессия, в первом проекте
теперь переделал на юзера ( для другого проекта).
теперь переделал на юзера ( для другого проекта).
0
Я вижу добавился абзац «не лишний Вопрос». Собственно ввиду его отсутствия я и задал свой вопрос. Хотя ваше объяснение не снимает проблему — многие сети работают через один IP для всех пользователей. Например, следуя вашему алгоритму я могу легко войти под Васей Пупкиным, сидящим со мной в одном офисе.
Так же в тексте остались неточности вроде:
— Пользователь на сайте project1.com жмет на ссылку Войти.
— идет редирект на sso.com/signin/project1/#id
А #id-то мы пока и не знаем :)
Так же непонятно как действовать на project2.com на страницах, открытых для анонимусов, но с особым поведением для авторизованных. Например, как на хабре — страницу могут видеть все, а поле для комментариев только авторизованные. Будете каждый раз пересылать пользователя на sso и обратно чтобы узнать не авторизовался ли он на project1.com?
Так же в тексте остались неточности вроде:
— Пользователь на сайте project1.com жмет на ссылку Войти.
— идет редирект на sso.com/signin/project1/#id
А #id-то мы пока и не знаем :)
Так же непонятно как действовать на project2.com на страницах, открытых для анонимусов, но с особым поведением для авторизованных. Например, как на хабре — страницу могут видеть все, а поле для комментариев только авторизованные. Будете каждый раз пересылать пользователя на sso и обратно чтобы узнать не авторизовался ли он на project1.com?
+1
>Так же непонятно как действовать на project2.com на страницах, открытых для анонимусов, но с особым
>поведением для авторизованных. Например, как на хабре — страницу могут видеть все, а поле для
>комментариев только авторизованные. Будете каждый раз пересылать пользователя на sso и обратно
>чтобы узнать не авторизовался ли он на project1.com?
это уже не проблема, и зависит от логики приложения. если не залогинен, то комментарий не напишешь, если залогинен на одном из проектов, то пиши сколько влезет :)
>многие сети работают через один IP для всех пользователей. Например, следуя вашему алгоритму я
> могу легко войти под Васей Пупкиным, сидящим со мной в одном офисе.
да, есть такой момент. у нас это решается с единым хранилищем сессий, об этом я не написал…
переезжаем в «черновики»
>поведением для авторизованных. Например, как на хабре — страницу могут видеть все, а поле для
>комментариев только авторизованные. Будете каждый раз пересылать пользователя на sso и обратно
>чтобы узнать не авторизовался ли он на project1.com?
это уже не проблема, и зависит от логики приложения. если не залогинен, то комментарий не напишешь, если залогинен на одном из проектов, то пиши сколько влезет :)
>многие сети работают через один IP для всех пользователей. Например, следуя вашему алгоритму я
> могу легко войти под Васей Пупкиным, сидящим со мной в одном офисе.
да, есть такой момент. у нас это решается с единым хранилищем сессий, об этом я не написал…
переезжаем в «черновики»
0
вернул первоначальный вариант
0
Подумал, пока курил, и придумал более простой алгоритм чем ваш. После этого прошел по ссылке из первой строки вашего поста и увидел тоже самое :) Но чтоб буквам не пропадать таки опубликую:
Достаточно в сессии пользователя 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 хранить 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 хранит данные аутентификации текущего пользователя и постоянно берет их оттуда.
Если хочет что-то записать — пишет туда же. Об этом моментально узнают и остальные проекты.
Если пользователь войдет/выйдет/войдет под другим пользователем мы это узнаем.
Все остальные события делаем где хотим — можем авторизовываться на любом из сайтов, логаутится на любом из сайтов и тд.
0
Редактор потерял
0
это были сбои на Хабре…
изучаю коммент
изучаю коммент
0
вообще задача чтоб с сайта А на сайт Б можно перейти без дополнительной авторизации.
0
Sign up to leave a comment.
Велосипед: межсайтовая авторизация собственных проектов