De la forma en que lo entiendo, todo el concepto de OAuth / SSO consiste en permitirle a un usuario la posibilidad de tener una contraseña central que puede usar en una multitud de sitios sin comprometerla porque realmente están ingresando al servicio que aloja su contraseña. .
Ahora, salvo el uso de la autenticación de dos factores, ya que el usuario promedio no usa esta función, y usa la función SSO de Google como ejemplo, pero esto se aplica a todos los servicios similares:
Lo que me impide escribir una aplicación que simplemente informa a un usuario que admitimos que inicie sesión con Google y que, en lugar de redirigirlos a la página SSO adecuada, solo proporciono un lugar para su nombre de usuario y contraseña de Google. Luego emulo al usuario y autorizo mi aplicación a través del proceso normal de inicio de sesión (SSO, por sus siglas en inglés) para que nada parezca anormal, y también almacene su nombre de usuario y contraseña de Google en mi servidor privado para fines maliciosos más adelante.
Y si la respuesta es nada me detendría, ¿por qué no es obligatoria la autenticación de 2 factores en todas estas implementaciones?