Enfoque basado en token para la autenticación a través de SSL Rest API - tokens de actualización

2

Soy un novato en seguridad.

Estoy desarrollando una aplicación de Android con un enfoque de autenticación basado en token. No estoy usando Oauth, ya que OAuth 2.0 no es un protocolo de autenticación, sino que se utiliza para delegar la autorización: enlace .

Como realmente no quiero que nadie más use mi API, no necesito delegar la autorización, por lo que he decidido no implementar Oauth.

Este es el flujo:

  1. El usuario pasa un nombre de usuario y una contraseña al servidor mediante SSL
  2. El servidor verifica el nombre de usuario y la contraseña y devuelve un token de autenticación mediante SSL. El token de autenticación es un conjunto aleatorio de caracteres
  3. El token de autenticación se guarda en la aplicación y luego se envía de vuelta al servidor cada vez que se realiza una solicitud REST mediante SSL

Mi pregunta: ¿son relevantes los tokens de actualización en este escenario?

El token de autenticación ya está encriptado a través de SSL y no es posible realizar ataques de repetición o de hombre en el medio.

También el token de autenticación se usa solo para acceder a mi API y no se usa posteriormente en ninguna otra llamada de API de servidor a servidor (como por ejemplo, si llamo al servidor de Google Maps desde mi servidor, no uso mi autenticación token para realizar la llamada (el token es único para mi servidor).

Podría hacer que el flujo sea más seguro haciendo un hash en el token de autenticación y enviándolo al servidor para que el servidor pueda verificar si el hash del token almacenado coincide con el hash enviado por la aplicación ...

¿Por qué usar tokens de actualización cuando su token de autenticación se transmite de forma segura a través de SSL?

    
pregunta Simon 02.08.2015 - 12:05
fuente

1 respuesta

1

Suena como un buen plan. Algunas cosas a tener en cuenta son

  • Asegúrese de almacenar la contraseña de forma segura en el servidor. Hay muchas referencias sobre eso. Las buenas estrategias probablemente impliquen salt y bcrypt o PBKDF2.
  • Siempre use SSL. Lo mejor es restringir no SSL a través del servidor web si puedes.
  • Usa un generador aleatorio seguro para obtener el token.

Dicho esto, usar la autenticación de su servidor de aplicaciones es probablemente lo más seguro. Los sistemas de seguridad existentes generalmente se consideran más robustos que los nuevos.

    
respondido por el Neil Smithline 02.08.2015 - 21:09
fuente

Lea otras preguntas en las etiquetas