Estoy trabajando en una aplicación web ASP.NET MVC, que recupera sus datos de una API en la parte posterior. Por lo tanto, la autenticación se realiza actualmente a través de la autenticación de formularios ASP.NET, lo que significa que el cliente envía un correo electrónico y una contraseña al sitio web, el sitio web transfiere esos datos a la API que devuelve un token de autenticación, que se almacena dentro de una sesión ASP.NET. Después de eso, la cookie de autenticación se establece en el cliente.
Está bien y es seguro (según mi conocimiento actual), no hay credenciales ni el token se almacena en el lado del cliente.
Como inconveniente, todas las solicitudes de AJAX deben enrutarse a través del sitio web. Como resultado, tengo un gran número de acciones de ASP.NET MVC, que no hacen nada más que reenviar la solicitud a la API y devolver el resultado que regresa de allí.
Eso puede ser un obstáculo en el futuro, porque la infraestructura del sitio web se debe escalar de la misma manera que la infraestructura de la API. Ahora estoy buscando una solución para eliminar estas llamadas redundantes a través del sitio web e ir directamente a la API desde el cliente (a través de AJAX).
Eso requiere autenticación API del cliente. Eso no sería un problema, técnicamente, si almaceno el token de autenticación en LocalStorage (los navegadores antiguos no son compatibles).
¿Pero qué tan seguro es ese enfoque? ¿Qué opciones existen para robar el token, junto a JSONP (que se puede evitar al no incluir scripts externos, verdad?)?