13 531
правка
Изменения
Нет описания правки
{{Box|{{Warning}} Ниже описывается Велосипедная Реализация SSO. В современном мире доступен OAuth2, про него можно почитать тут: [[Кратко об SSO через OAuth2]]}}
…или как реализовать простой [[rupedia:Технология единого входа|Single Sign-on]] в веб-системах.
ID неизвестен клиенту:
: '''Попытка авторизации по неверному или устаревшему идентификатору сессии, либо сервер авторизации не смог передать данные учётной записи. Попробуйте ещё раз ''(ссылка)''.'''
<span style="color:red">Самая противная ошибка</span> — это ''Redirect-Loop'' — бесконечное перенаправление, которое можно спровоцировать, если при ошибке авторизации никак не сохранить факт ошибки в браузере пользователя (например, с помощью cookie) и вместо того, чтобы показать страницу с ошибкой, отправить пользователя обратно на шаг 2 (через шаг 1).
|}
В реализации протокола очень желательна обработка ошибок и их показ пользователю в удобном виде, чтобы не получалось, как в OpenID — «она утонула» © (то есть «произошла ошибка» без каких-либо деталей).
== Плюс FoF FoF_Sudo ==
Как это сделать? Ответ — одноразовые ключи на каждый запрос: * FoF видит в урле рсс’ки &fof_sudo=1(что_угодно). Что_угодно — совершенно что угодно, единственно, в случае FoF оно должно быть разное для разных пользователей, иначе FoF двух пользователей подпишет на один и тот же защищённый фид, а обновлять будет вообще как попало — то от имени одного, то от имени другого пользователя.* FoF генерирует случайный ID , запоминает соответствие этому ID пользователя и добавляет в запроскукис:
** Cookie: fof_sudo_id=ID
* Генератор рсс Система, к которой произошло обращение, видит cookie этот кукис (fof_sudo_id ) и делает обратный запрос к fof: /fof-sudo.php?id=ID* FoF отвечает данными пользователя, которые он помнит по этому ID, в формате JSON ({'user_name':'user@custis.ru'} ) и забывает ID* Генератор рсс принимает тот фактВнешняя система верит, что теперь он работает надо авторизоваться под юзером именем юзера user@custis.ru (и , например, отдаёт правильную рсс’куRSS’ку) {{Box|{{Warning}} И это тоже покрывается OAuth2.}}
[[Категория:Разработка]]