Pergunta

Recentemente adicionei o login OpenID ao meu site.Mas não sei como adicionar o recurso de logout.

Por exemplo, ao clicar no botão Sign In, posso mostrar o formulário de login do provedor OpenID selecionado, por exemplo, a Conta do Google.No entanto, não sei como implementar um botão Sair para sair da Conta do Google.

Conselho por favor.

Foi útil?

Solução

O OpenId que confia a parte não pode registrar o usuário fora do OP, você pode implementar apenas o logout local. Assim como o RP não pode registrar o usuário no op.

Outras dicas

Os provedores individuais do OpenID oferecem URLs diferentes para o logout para o qual o usuário pode ser redirecionado.

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

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

Houve uma discussão sobre permitir o OPS fornecer esses URLs como parte do padrão; Vejo esta discussão na lista de discussão OpenID.

Eu acho que você está misturando paradigmas (odeia essa palavra, mas não consigo pensar em um melhor para usar agora). Seu link de login envia o usuário ao seu provedor OpenID para autenticação, mas não é o usuário fazer login na conta do Google, que é o bit importante, ele está fazendo login no seu site, fornecendo credenciais via OpenId. O usuário já pode estar conectado ao seu provedor OpenID; Você não sabe (não sabe) e não precisa se importar.

Da mesma forma, o link de logout no seu site deve registrar apenas o usuário do seu site, retornando -os ao mesmo estado de antes de clicar no botão de login. O usuário já pode ter saído do seu provedor OpenID; Você não sabe nem se importa. Este site é um bom exemplo :).

Apenas destrua a sessão.

Você só pode implementar o logout local para o OpenID. Como Charles Duffy disse que você sempre pode usar URLs específicos, mas isso está desde que o usuário esteja usando um provedor para o qual você conhece o URL de logout. Isso pode ser industriando se o seu usuário descobrir que todas as contas do Google estão conectadas ao fazer logout do seu site.

A outra maneira de analisar o problema é se você deseja garantir que a pessoa que está fazendo login no seu site sempre precisa se inclinar em sua senha, em vez de apenas fazer login quando já está conectado a um provedor OpenID.

Este (IMHO) fornece melhor segurança se eles o estiverem usando de um terminal público. Isso garantirá que o usuário que está fazendo login sempre precisa revalidar sua senha.

Para fazer isso, é realmente bastante simples, basta usar a extensão do pape openId.ns.pape = "http://spec.openid.net/extensions/pape/1.0".
OpenId.pape.max_auth_age = 0

como parte do URL quando você está entrando em um provedor OpenID.

Mais informações aqui http://code.google.com/apis/accounts/docs/openid.html

Abaixo está um truque pelo qual posso fazer logout no Google:

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

Estou fazendo meu projeto e preso no problema de logout, não sei como fazer isso como você, resolvi redefinir todo o cookie porque não conheço o cookie que define o status de login que preciso saber isto.

você deve ter criado algumas variáveis ​​de sessão após a verificação bem-sucedida do provedor openid, você só precisa destruir essas variáveis ​​de sessão.Você não pode destruir a sessão criada pelo provedor openid.

Aqui está uma solução confiável para sair do Google e do seu RP.

Basta chamar isso de URI

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

Ele fará o logout do Google e redirecionará para o seu aplicativo. Obrigado!

Em breve, postarei minha solução de logout para Windows Live e Facebook.com Sts.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top