¿Cómo administro la autenticación de usuario para poder escalar mi aplicación en cualquier momento?

Descargo de responsabilidad: trabajo en Stormpath (API de administración de usuarios de Stormpath).

Como otro usuario mencionó, Stormpath es una gran opción para cosas como esta. Básicamente actúa como una API REST simple que puede usar para crear usuarios, crear claves API para usuarios y manejar la autenticación al 100%. Y si está trabajando en Flask, hay una integración increíble que debería ser muy fácil de conectar a su aplicación.

Beneficios

  • Fácil de usar.
  • Escala instantánea
  • Sin mantenimiento
  • Gratis para hasta 100k llamadas API por mes.
  • Seguro.
  • Puede configurarlo para que funcione con un almacén de caché (como Redis), para acelerar la autenticación, de modo que no necesite hacer llamadas HTTP costosas para CADA solicitud de autenticación.

La principal desventaja para la mayoría de los usuarios es que tiene que pagar si supera el nivel gratuito (aunque el precio es barato: precios: API de administración de usuarios de Stormpath). Sin embargo, si compara esto con lo que pagaría ejecutando su propia base de datos / API, verá que es increíblemente económico.

¡Espero que ayude!

Puede utilizar un servicio de terceros, como UserApp (Gestión de usuarios para aplicaciones web con UserApp) o StormPath (Autenticación y gestión de usuarios para desarrolladores).

Un par de buenas ideas están usando OAuth, OAuth2 u OpenId. La mayoría de los buenos enfoques se basan en tener un encabezado HTTP con un token que pueda comparar con un (tercer) servicio.
Una alternativa es usar certificados X509, dependiendo de quién llame a sus servicios REST.

Con mucho, el enfoque más simple es hacer una configuración tradicional basada en sesión con sesiones almacenadas en una base de datos compartida y escalar la base de datos según sea necesario.

Una forma realmente simple es almacenar credenciales en un conjunto de réplica de mongodb con esclavos en todos los nodos de la API y establecer esclavo-ok en la lectura de db.

¿Alguna idea sobre OpenIDM by Forgerock? Esto luce bien.