Estoy aprendiendo sobre OAuth 2 y OpenID Connect . Al leer las documentaciones, siento que la especificación de OpenID Connect deja un espacio en blanco con respecto a la autenticación del usuario final.
Los estados de las especificaciones :
Los métodos utilizados por el Servidor de autorización para autenticar al usuario final (por ejemplo, nombre de usuario y contraseña, cookies de sesión, etc.) están fuera del alcance de esta especificación.
Para una implementación del Servidor de Autorización, me preguntaba qué protocolos comunes de autenticación de usuario final existen.
Suponiendo que TLS está en lugares entre la aplicación del usuario final y el Servidor de autorización, al igual que el OAuth 2 Relying Party , todavía no me siento cómodo usando un esquema simple de nombre de usuario / contraseña, como hay esquemas mucho más sofisticados disponibles, como Desafío / Respuesta o incluso Autenticación basada en clave pública.
Mi lista de deseos para el esquema de autenticación incluiría los siguientes requisitos:
- No hay credenciales almacenadas en texto sin formato en el lado del servidor, asumiendo que la base de datos del servidor puede ser hackeada
- La menor cantidad de credenciales de texto simple comunicadas a través del cable
- Una capa adicional de protección (debajo de TLS) para Replay Attacks
En general, me gustaría permanecer en el alcance posible para las aplicaciones móviles utilizadas por John Doe, por ejemplo. una estructura PKI con un intercambio de certificado seguro que involucre un canal diferente o similar será una exageración. También la autenticación de dos factores estaría bien, pero no debería ser obligatoria en la primera etapa.
¿Podría indicarme protocolos / estándares que pasé por alto o que aún no he encontrado? Gracias!
Editar: acabo de descubrir SCRAM , que parece prometedor. Si hay otros métodos que debería conocer, agradezco su ayuda.