Изменения

Глобальная авторизация в веб-системах

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