Вопрос

На веб-сайте я реализовал вход в систему с использованием OpenID (на основе StackOverflow).

Но, похоже, я не могу выйти из системы.
На моем хостинге я могу выйти из системы, но когда пользователь пытается войти в систему снова (особенно с помощью Google), аутентификация проходит, не требуя от пользователя ввода имени и пароля.

Как я могу указать поставщику OpenID, что пользователь больше не зарегистрирован на сайте?

Это было полезно?

Решение

OpenID аутентифицирует пользователей на вашем сайте, а затем запускает сеанс на вашем сайте.Вы уничтожаете или аннулировать сессию вашего сайта отдельно из сеанса пользователя со своим провайдером OpenID.

Пользователь посещает joewidgets.com > Пользователь входит в систему с помощью OpenID (с новым или существующим сеансом провайдера) > ...Пользователь нажимает кнопку «Выйти» > joewidgets.com уничтожает/делает сеанс недействительным.

Если у пользователя есть провайдер OpenID, он должен оставаться в системе, и ваша система автоматически проверяет, то он создаст новый локальный сеанс.(Не)к счастью, вы не можете/не беспокоитесь о том, что делает или не делает пользователь в данный момент. их провайдера, что является плюсом/минусом OpenID.

Есть спор в Социальная помада который требует «единого выхода», но OpenID в настоящее время не предоставляет эту функцию..

Другие советы

Это называется единым выходом из системы или единым выходом, который OpenID не поддерживает.На мой взгляд, SSO без выхода из системы — это большая дыра в безопасности.Выход из системы с одного сайта не имеет большого значения, если другие могут войти в систему с помощью нескольких щелчков мыши.

А пока нам нужно вспомнить о провайдере.Если это кто-то, кого мы знаем, мы запускаем для него процесс выхода из системы.Для Google это URL-адрес:

https://www.google.com/accounts/Выход

Процесс выхода из системы уродлив, но он выполняет свою работу.

Обычно это обрабатывается провайдером OpenID — например, если пользователь остается в своей учетной записи Google и устанавливает флажок «запомнить» авторизацию OpenID для вашего конкретного сайта, тогда провайдер прозрачно войдет в систему и перенаправит обратно без отображение приглашения для входа в систему.

"Это функция, а не ошибка".

Поставщик идентификаторов может сохранить авторизацию пользователя для поставщика с помощью файлов cookie и, кроме того, может отказаться от повторного запроса пользователю о предоставлении той же информации, которая была предоставлена ранее (с помощью запроса).Поэтому, когда пользователь на Сайте A попросил авторизоваться через Сайт B и был перенаправлен, Сайт B сначала попросил пользователя аутентифицироваться самостоятельно.Затем Сайт B спросил, должен ли он делиться какой-либо информацией (и иногда какой именно) с Сайтом A.На этом этапе он также обычно спросит, хотите ли вы автоматически делиться этой же информацией в будущем.Некоторые провайдеры скажут "да", некоторые "нет", некоторые не будут спрашивать.Затем сайт B перенаправляется на Сайт A и делится информацией, после чего вы входите в систему.

Если Сайт A повторно перенаправляет на сайт B для запроса входа в систему, сайт B может 1) Уже иметь файл cookie, который аутентифицирует текущего пользователя Сайта B.2) У вас уже есть запись о том, какой информацией допустимо делиться с Сайтом B.3) Автоматически делитесь этой информацией через перенаправление, вообще не делая паузы для запроса пользователя.

Это функция, ориентированная на удобство.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top