TL; DR: No está usando una frase de contraseña varias veces con OpenID, pero las otras partes (como Stack Exchange) confían en su proveedor de identidad (como Google) para que lo autentiquen cuidadosamente. La frase de contraseña (o cualquier otro esquema de autenticación como autenticación de dos factores, certificados, etc.) solo se revela al proveedor de identidad.
Certificaciones de identidad en el mundo real
Los métodos similares a menudo se utilizan para abrir cuentas bancarias, registrarse en contratos telefónicos u otras acciones que requieren la verificación de su identidad. Si no quiere ir en persona a esa compañía, a menudo puede verificar su identidad a través de un notario, una oficina postal o una agencia bancaria, lo que verificará su pasaporte (esto es como presentar su frase de contraseña a Google), y luego entregar usted (o le pasa inmediatamente a un tercero que solicita la autenticación) un certificado que confirme que verificaron su identidad, pero sin adjuntar una copia de su pasaporte.
OpenID
La idea de OpenID (y tecnologías similares de inicio de sesión único) es que no ingrese una contraseña en el sitio de destino. Por ejemplo, si desea iniciar sesión en su cuenta de Stack Exchange utilizando Google, Stack Exchange nunca obtiene su frase de contraseña, sino que se le redirige a Google, lo que lo autenticará (posiblemente ya haya iniciado sesión en Google, por lo que es posible que simplemente se le pregunte si desea ser autenticado para el intercambio de pila y se le envíe de vuelta allí.
Stack Exchange no obtiene su frase de contraseña en ningún momento, ni siquiera se daría cuenta cuando cambia su frase de contraseña de Google. En su lugar, Google envía un tipo de certificado a Stack Exchange, entregando cierta información de identidad, que puede ser solo un identificador numérico, pero también puede enriquecerse con información adicional como su dirección de correo electrónico.
Hay una gran imagen que describe el flujo de trabajo en Wikipedia:
" OpenIDvs. Pseudo-AuthenticationusingOAuth "por Saqibali - Trabajo propio. Licenciado bajo CC0 a través de Commons .
OAuth
OAuth hace algo un poco diferente al no pasar certificados, sino un tipo de clave de acceso. Para simular el comportamiento de OpenID a través de OAuth, el proveedor de identidad proporcionaría un servicio simple que se puede usar solo para la autenticación. Si la clave "encaja", el usuario se autenticó correctamente.
Seguridad
Todo el escenario es seguro, teniendo en cuenta algunas precauciones de seguridad.
- No debe dar su contraseña a un proveedor de autenticación falso que se parece a su proveedor real (por ejemplo, una página de Google falsa para ataques de phising). Esto es como proporcionar su pasaporte a un notario falso, que hará una copia y hará cosas malas con él. Esto se puede mitigar a través de una verificación cuidadosa del URI del sitio (los administradores de contraseñas y la búsqueda automática de frase de contraseña por URI son muy útiles con esto) y el uso de medidas de seguridad adicionales como la autenticación de dos factores.
-
El certificado solo se puede utilizar durante un tiempo determinado, y solo es válido por sitio . Por ejemplo, un sitio web falso de Stack Exchange puede obtener un certificado. Pero como esto solo es válido para el "intercambio falso de pila", el atacante no podrá usarlo para autenticarse contra el intercambio real de pila u otros sitios web.
La implementación real de esto difiere entre todas las tecnologías de inicio de sesión único, pero todas implementan un método similar para vincular certificados a terceros.