Desarrollamos aplicaciones sociales para dispositivos móviles. Cada aplicación consume servicios web RESTful API. Cuando implemento el inicio de sesión, generalmente almaceno el nombre de usuario y la contraseña en algún lugar del dispositivo. Luego los envío y como respuesta obtengo acceso a mi perfil. Pero también sé que hay otra forma de hacer esto.
Uno de alguna manera genera un token con un algoritmo particular, y luego lo envía en lugar del nombre de usuario y contraseña para obtener acceso.
¿Cómo debo implementar eso? ¿Debo enviar este token junto con cualquier otra solicitud que no sea iniciar sesión?
Respuestas:
Hay varias formas de implementar la autenticación en el contexto RESTful, y es más seguro enviar solo tokens en lugar de inicio de sesión / contraseña: podría hacer que los tokens no sean válidos por tiempo de espera o por algún otro criterio, y pedirle al usuario que vuelva a autenticarse .
Por ejemplo, solicitudes de REST de autenticación utilizando HMAC . En este enfoque, el cliente tendrá claves públicas y secretas . Para todas las solicitudes que requieren autenticación , debe agregar la clave de publicación y usar la clave secreta para calcular el hash de su solicitud
Ahora el servidor podría identificar la solicitud por clave pública y calcular requestHash . Si ambos hashes son iguales, el usuario está autorizado.
Por cierto, también debe usar https para asegurar la comunicación a través de una red informática; esto reducirá drásticamente la cantidad de posibles problemas.
fuente
oAuth es el estándar para esto, pero hay más soluciones.
No intente implementar seguridad, tokens, etc., ya que es un tema difícil y arriesgado. Tome por ejemplo un vistazo aquí:
/programming/4574868/securing-my-rest-api-with-oauth-while-still-allowing-authentication-via-third-pa
fuente