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

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

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

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

9 ответов


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


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

Google:https://www.google.com/accounts/Logout

Yahoo:https://login.yahoo.com/config/login?logout=1

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


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

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


просто уничтожьте сеанс.


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

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

Это (IMHO) обеспечивает лучшую безопасность, если они используют его с публичного терминала. Это гарантирует, что пользователь, который входит в систему, всегда должен повторно подтвердить свой пароль.

чтобы сделать это на самом деле довольно просто, просто используйте расширение PAPE openid.ns.pape = "http://specs.openid.net/extensions/pape/1.0".
openid.Пейп.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();
 }

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


вы должны создать некоторые переменные сеанса после успешной проверки от поставщика 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 СТС.