Главная Новости

Php - Авторизация через социальные сети: выход - Stack Overflow на русском

Опубликовано: 14.10.2017

Как правило, не может .

Подобная аутентификация основана на авторизации пользователем доступа к его идентификационным данным в стороннем источнике (будем его называть соцсетью) . И сам факт такой аутентификации сообщает сайту (клиенту OAuth2) только то, что "в соцсети Х (провайдере OAuth2) у этого пользователя идентификатор Y", из чего, скажем, сайт может сделать вывод, что "у нас это пользователь с идентификатором Z, будем считать его таковым" (если ранее пользователь Z на этом же сайте указал, что по паре X-Y его можно опознать, это т. н. "привязка аккаунта соцсети").

В типичных системах аутентификации такому пользователю выдаётся сессия, удостоверяющая его, как Z на сайте, и эта сессия существует до тех пор, пока не перестанет быть действительной для сайта (не соцсети!):

...при явном уничтожении ("Выход" с сайта или отзыв сессий сервером по внешним причинам) ...по времени (время жизни сессий обычно ограничено)

OAuth2 заключается в передаче токена от соцсети (через браузер ) сайту . После того, как передача состоялась, соцсеть и сайт взаимодействуют напрямую и не думают о браузере .

Если человек на этом компьютере выйдет из аккаунта соцсети , то "порвётся" только связь браузер-соцсеть . Сайт в ней не участвует, и об этом факте он узнает, только если снова явно спросит, снова инициировав вход по OAuth2. Который через связь браузер-соцсеть попытается "установить личность" и получит отказ, т. к. такой связи в этом браузере больше нет. Но чтобы это произошло, вам придётся каждый раз гнать пользователя через всю процедуру OAuth2, считая, что удостоверение от соцсети действительно всего на один запрос. Это будет примерно как если бы после любого запроса пользователь жал "Выход". Не очень-то практично.

Ситуация обстоит чуть иначе, если пользователь отзовёт доступ приложения к его данным из интерфейса соцсети . Тогда прямая связь соцсеть-сайт должна перестать функционировать, о чём сервер может узнать и инвалидировать сессию. Но соцсеть, опять же, сообщать об этом не обязана (по OAuth2), и в этом случае сайт будет вынужден постоянно опрашивать соцсеть (мы уже приехали мне всё ещё можно данные?), что тоже не очень-то практично.

3D стерео фильмы для 5D
rss