Me gustaría implementar una API REST con autenticación básica que se basa en el nombre de usuario y la contraseña. Debido a que REST no tiene estado, el usuario tendría que volver a ingresar el nombre de usuario y la contraseña para cada solicitud sin almacenarlos en una cookie. Como el almacenamiento de un nombre de usuario y contraseña en una cookie no es una opción, se necesita otra solución.
El escenario en el que estoy pensando será el siguiente:
- El usuario navega a enlace
- El usuario ingresa el nombre de usuario y la contraseña (cifrados con SSL).
- El sistema verifica si las credenciales proporcionadas son correctas.
- Si es correcto: el sistema genera un GUID, cifra el GUID con la contraseña del usuario y lo envía al usuario.
- Si no es correcto: aumentar FailedPasswordAttemptCounter y comprobar si el inicio de sesión debe estar bloqueado para el usuario.
Como la respuesta del servidor al cliente no está cifrada, el GUID se cifra con la contraseña del usuario. Solo el usuario puede descifrar el GUID.
El usuario proporciona el GUID para todos los demás recursos que necesitan autenticación en lugar de nombre de usuario y contraseña.
¿Este enfoque es mejor en comparación con el de proporcionar un nombre de usuario & ¿Contraseña para cada solicitud?
Soy consciente del hecho de que alguien puede generar GUID e intenta autenticarse con ellos. Pero un ataque dirigido a un usuario específico es casi imposible ya que el recurso de inicio de sesión proporciona un mecanismo de bloqueo.
Mi pregunta está relacionada de alguna manera con esta: enlace