Entiendo que OAuth no es un protocolo de autenticación, sino uno de autorización (incluso si el primer párrafo en La página OAuth 2.0 de Google no está de acuerdo ), además de eso:
[...] se puede abusar de la autorización en alguna pseudo-autenticación, sobre la base de que si la entidad A obtiene de B una clave de acceso a través de OAuth, y la muestra al servidor S, entonces el servidor S puede inferir that B autentificó A antes de otorgar la clave de acceso.
y que debo usar OpenID cuando necesito autenticar a un usuario.
Sin embargo, significa que si realmente uso OAuth (no OpenID Connect , sino OAuth 2.0) con Google, ¿significa que mi aplicación web no es segura? ¿Se puede comprometer para obtener acceso a una cuenta o hacer algo mal? ¿Puede un usuario falsificar algo para pasarlo por otro usuario?
Para que la pregunta sea un poco menos abstracta, asumamos que:
-
Las bibliotecas que uso, como
Flask-OAuth
para Python y bibliotecas similares para otros idiomas, son seguras. -
Confío en Google,
-
La cuenta de Google de un usuario no está comprometida (si la cuenta de Google del usuario está comprometida, se espera que un atacante tenga acceso a la cuenta del usuario en mi aplicación web),
-
No se debe confiar en el FAI / servicio de alojamiento / otro hombre en el medio,
-
Cualquier persona que tenga una cuenta de Google puede iniciar sesión / registrarse / lo que sea,
-
No necesito que la dirección de correo electrónico, el nombre / apellido u otra información personal del usuario sea verdadera; todo lo que necesito es mantener los datos de un usuario protegidos de otros usuarios.