Pergunta

Estou lendo sobre Login federado para usuários da conta do Google Para descobrir como posso fazer um login de usuário em um aplicativo da Web usando a conta do Google.

Assim, no final do processo, o Google retorna um identificador fornecido pelo Google que é anexado como openid.claimed_id. Isso significa que o aplicativo da Web usa esse identificador para reconhecer o usuário e permitir o acesso aos recursos e dados do aplicativo. Minha pergunta é: esse identificador é estático? Posso usar esse identificador para identificar repetidamente o mesmo usuário?

Foi útil?

Solução

Sim. Considere o valor openID.claimed_id como o nome de usuário. Especialmente com o Google, mas isso é verdade para qualquer provedor OpenID que realmente implementa 'identidade direcionada', não considere esse nome de usuário correlatível com outros sites. Qualquer outra parte que se confunda além do seu próprio site receberá um valor diferente reivindicado para o mesmo usuário do Google, por design.

Além disso, certifique -se de tratar este reivindicado_id como maiúsculas e minúsculas.

Outras dicas

A resposta específica para sua pergunta é encontrada em Googles OpenID API Documentação:

O identificador fornecido pelo Google, que não tem conexão com o nome ou senha da conta ou senha da conta real do Google, é um valor persistente; Ele permanece constante, mesmo que o usuário altere seu nome de usuário e/ou endereço de email do Google. Esse identificador também é uma "identidade direcionada", ou seja, o Google retorna um valor diferente para cada parte que confia. O Google usa o parâmetro de solicitação OpenId.realm para reconhecer a parte que se conta com a parte; portanto, se o aplicativo de terceiros decidir alterar esse valor, todos os identificadores de usuário mudarão.

Na verdade, acabei de encontrar uma instância em que o Google afirmou que havia mudado para o meu usuário de teste. Eu estava chegando ao final da implementação do OpenID no meu aplicativo e, aparentemente, não é motivo de reivindicação que os dados de resposta foram alterados.

Eu tenho testado com essa conta nas últimas duas semanas, e o reivindicado foi o mesmo o mesmo tempo todo, como o esperado. Então wham, mudou! Eu observei os dados de resposta muitas vezes para verificar e o código subjacente para recuperar os dados não havia alterado.

Não tenho certeza de como lidar com isso no momento, mas acho que isso vai me dar um loop. Após a autenticação inicial, os usuários se registram no site (como você pode esperar) e configurar um nome de tela. Como devemos verificar se é o mesmo usuário se o reivindicado_id tivesse mudado? Certamente não podemos usar o endereço de e -mail, de acordo com as práticas recomendadas.

EDITAR

Agora eu tenho torta na minha cara! Perdi um pequeno detalhe, que acabou sendo um detalhe importante. Mudo meu ambiente de desenvolvimento e estava hospedando em um host em V diferente. Isso muda efetivamente o reino e mudará a resposta reivindicada de acordo com os documentos.

Esta foi uma boa lição para mim, pois eu estava prestes a implementar o OID em um subdomínio no qual o reino estava sendo definido automaticamente no meu código. Agora eu me salvei de dor de cabeça no caminho, porque não seria capaz de usar o mesmo banco de dados do usuário em todos os outros subdomínios sem quebrar a identidade.

Atualizando o Reino

MAIS INFORMAÇÕES

Assim como uma nota lateral - mesmo se você estiver desenvolvendo sua solução OpenID para um de seus subdomínios, pode ser prudente especificar o reino ao seu domínio de nível superior.

Por exemplo, OpenId.realm = http: //*.yourdomain.com

Isso permitirá que você expanda sua página de login em todos os seus subdomínios e mantenha a identidade do usuário em relação a eles.

(Opcional) Reino autenticado. Identifica o domínio que o usuário final está sendo solicitado a confiar. (Exemplo: "http: //*.myexamplesite.com") Esse valor deve ser consistente com o domínio definido no OpenID.return_to. Se este parâmetro não estiver definido, o Google usará o URL referenciado no OpenID.return_to.

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