Как добавить функцию выхода из системы на сайт с поддержкой OpenID?

StackOverflow https://stackoverflow.com/questions/1968814

  •  21-09-2019
  •  | 
  •  

Вопрос

Недавно я добавил вход OpenID на свой сайт.Но я не знаю, как добавить функцию выхода из системы.

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

Пожалуйста посоветуй.

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

Решение

Проверяющая сторона OpenID не может выполнить выход пользователя из OP, вы можете реализовать только локальный выход.Точно так же, как RP не может авторизовать пользователя в OP.

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

Отдельные поставщики OpenID предлагают разные URL-адреса для выхода из системы, на которые может быть перенаправлен пользователь.

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

Яху: https://login.yahoo.com/config/login?logout=1

Обсуждалось разрешение ОП предоставлять эти URL-адреса как часть стандарта;видеть это обсуждение в списке рассылки OpenID.

Я думаю, вы смешиваете парадигмы (ненавижу это слово, но сейчас не могу придумать, что лучше было бы использовать).Ваша ссылка для входа отправляет пользователя к его провайдеру OpenID для аутентификации, но важен не вход пользователя в свою учетную запись Google, а вход на ваш веб-сайт путем предоставления учетных данных через OpenID.Пользователь вполне может уже войти в систему своего провайдера OpenID;вы не (не можете) знать, и вас это не должно волновать.

Аналогичным образом, ссылка выхода на вашем сайте должна выводить пользователя только с вашего сайта, возвращая его в то же состояние, в котором он находился до нажатия кнопки входа в систему.Возможно, пользователь уже вышел из своего провайдера OpenID;ты не знаешь и не заботишься.Этот сайт является хорошим примером :).

Просто уничтожьте сессию.

Вы можете реализовать только локальный выход из системы для OpenID.Как сказал Чарльз Даффи, вы всегда можете использовать определенные URL-адреса, но при условии, что пользователь использует провайдера, для которого вы знаете URL-адрес выхода из системы.Это может расстроить, если ваш пользователь обнаружит, что все его учетные записи Google вышли из системы, когда он выходит из вашего веб-сайта.

Другой способ взглянуть на проблему заключается в том, хотите ли вы, чтобы человек, входящий на ваш сайт, всегда должен был вводить свой пароль, а не просто входить в систему, когда он уже вошел в систему у провайдера openid.

Это (ИМХО) обеспечивает лучшую безопасность, если они используют его с общедоступного терминала.Это гарантирует, что пользователю, который входит в систему, всегда потребуется повторно подтвердить свой пароль.

Для этого это на самом деле довольно просто, просто используйте Pape Extention OpenID.NS.PAPE = "http://specs.openid.net/extensions/pape/1.0".
openid.pape.max_auth_age = 0

как часть URL-адреса при входе в систему провайдера OpenID.

Дополнительная информация здесь http://code.google.com/apis/accounts/docs/OpenID.html

Ниже приведен один трюк, с помощью которого я могу выйти из Google:

<iframe id="myIFrame" src="" style='display:none;' > 
 function logOutGoogle(){
     document.getElementById('myIFrame').src='https://www.google.com/accounts/Logout';
     timeOut();
 }

Я делаю свой проект и застрял в проблеме выхода, я не знаю, как это сделать, как вы, я решил сбросить все печень это.

вы должны были создать некоторые переменные сеанса после успешной проверки со стороны провайдера openid, вам просто нужно уничтожить эти переменные сеанса.Вы не можете уничтожить сеанс, созданный провайдером openid.

Вот надежное решение для выхода из Google и вашего RP.

Просто позвоните по этому URI

https://www.google.com/accounts/Logout?continue=https://appengine.google.com/_ah/logout?continue=https://www.yourapp.com

он выйдет из Google и перенаправится обратно в ваше приложение.Спасибо!

Вскоре я опубликую свое решение для выхода из системы для Windows Live и Facebook.com STS.

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