Quiero usar la autenticación basada en token donde el usuario inicie sesión con una combinación de nombre de usuario y contraseña. El servidor se aseguraría de que el nombre de usuario y la contraseña coincidieran y luego devolvería un token que el cliente usaría para realizar las siguientes llamadas a la API. Este token caducaría después de un cierto tiempo (4 horas es lo que estoy pensando), después de lo cual el usuario tendría que iniciar sesión nuevamente.
La forma en que quiero generar tokens es esta: SHA256 hashes de 3 cadenas generadas aleatoriamente (caracteres - [0-9, a-z, A-Z]), concatenadas. Almacenaría este token en una tabla de base de datos junto con el nombre de usuario y el tiempo de inicio de sesión.
Cuando se realice una solicitud de API con este token, podré obtener el usuario del token.
Quiero protegerme contra los ataques de fuerza bruta.
Quiero implementar todo esto en PHP. ¿Es este enfoque lo suficientemente bueno? Si no, ¿por qué? ¿Y cuál sería una mejor manera de hacerlo? ¿Debería haber una manera de obtener al usuario solo desde el token (sin buscar en una base de datos)? Si es así, ¿por qué?
Soy un novato en lo que respecta a la seguridad, por lo que las explicaciones detalladas serían muy apreciadas.