Autenticación móvil de Google para API REST

1

Así que estoy tratando de crear y asegurar una API REST móvil en un servidor existente que ejecuta nuestra aplicación web. No vamos a abrir la API al público y escribiremos la aplicación cliente utilizando PhoneGap / Javascript / HTML. Podríamos utilizar HTTP Basic muy bien, pero quería algo un poco más avanzado y seguro. No quiero utilizar OAuth o la seguridad de AWS de Amazon, ya que parecen ser principalmente para abrir su API al público o a un tercero.

Soy realmente nuevo en las API de REST y la seguridad, pero después de investigar un poco planeo usar esto implementación tal como está escrito por Google. Resumiré la idea general:

  • El usuario envía las credenciales del servidor a través de un POST seguro
  • Si las credenciales coinciden. El servidor crea un token, lo guarda en la base de datos y luego lo envía al usuario. El token se basará en el UUID del usuario y una marca de tiempo.
  • La base de datos almacenará la última vez que el usuario cambió su contraseña y solo validará las llamadas con tokens que se emitieron después de ese tiempo.
  • El usuario envía este token en el encabezado con cada llamada a la API

¿Qué tan segura es esta implementación? ¿Cómo detengo los ataques de fuerza bruta en mi método de autenticación? Cualquier otra sugerencia o recomendación son apreciadas.

    
pregunta Drew S 12.11.2013 - 12:55
fuente

1 respuesta

0

La seguridad de esta solución depende de la seguridad de dos elementos:

  • La conexión: si está utilizando SSL, los problemas relacionados con la seguridad de la conexión se entienden bien (si no siempre son fáciles de evaluar): calidad del almacén raíz del lado del cliente, intercambio de claves adecuado, uso de protocolos seguros, etc.

  • El token en sí. Primero, debe generarse de manera que sea difícil de adivinar e imposible de reutilizar. También debe estar protegido mientras está en el sistema cliente (esto es más un problema en una aplicación web que en un cliente dedicado, pero debe mencionarse).

Suponiendo que ambos aspectos del problema se manejan adecuadamente, entonces sí, dicha implementación es bastante segura.

    
respondido por el Stephane 12.11.2013 - 14:54
fuente

Lea otras preguntas en las etiquetas