Eu encontrei isso em outro SO fio:
Passos:
- O usuário se conecta ao site ativado para OpenID.
- O usuário insere informações de credenciais.
- Um POST é feito com um BASE64 (site para provedor)
- Uma resposta é criada (que contém expiração)
- O site redireciona o usuário ao provedor para efetuar o login.
- O usuário digita a senha e envia.
- A verificação está concluída.
- Conecte-se!
Como as etapas 6-8 são protegidas? Do meu ponto de vista, o cliente está se autenticando com o provedor e relatando o resultado ao nosso servidor.
O que impede o cliente de falsificar o resultado da autenticação?
Respostas:
2 para resposta № 1Principalmente, o resultado da autenticação é assinado criptograficamente pelo provedor. Existem também outras medidas de segurança que protegem contra outros ataques.
Citando o Especificação OpenID 2.0, seção 11.:
Quando a Parte Confiante recebe uma afirmação positiva, DEVE verificar o seguinte antes de aceitar a afirmação:
- O valor de "openid.return_to" corresponde ao URL da solicitação atual (Seção 11.1)
- As informações descobertas correspondem às informações na asserção (Seção 11.2)
- Ainda não foi aceita uma afirmação deste OP com o mesmo valor para "openid.response_nonce" (Seção 11.3)
- A assinatura na asserção é válida e todos os campos que precisam ser assinados são assinados (Seção 11.4)
Obviamente, o cliente pode enviar um resultado falso de autenticação, mas não passa na verificação.