¿Qué estrategia de autenticación debo usar para mi API?

Tengo una aplicación angular-js del lado del cliente. Y tengo una API de nodejs del lado del servidor. La aplicación del lado del cliente y del lado del servidor se encuentra en diferentes dominios. La API de uso del lado del cliente para obtener o publicar algunos datos. Además, el lado del cliente necesita obtener imágenes del lado del servidor y mostrarlas en un navegador.

Yo uso el módulo de pasaporte nodejs para la autenticación. No sé qué estrategia de autenticación es mejor para mí. Creo que hay dos tipos de estrategias de autenticación: basadas en token y basadas en cookies. Y creo que ambos tipos son inútiles en mi caso:

Si uso estrategias basadas en tokens, entonces debería enviar el encabezado de autenticación con un token en cada solicitud a la API. Puedo enviar encabezados en solicitudes AJAX, pero si quiero mostrar una imagen que se encuentra en el lado del servidor, tengo un problema. Porque un navegador no enviará encabezados en<img> etiqueta.

Si uso cookies, entonces no tengo el problema con las imágenes. Pero tengo problemas con las solicitudes AJAX. Porque la cookie de sesión se almacena en el dominio de la aplicación del lado del servidor. Y si envío solicitudes AJAX desde el dominio del lado del cliente, debería enviar cookies con cada solicitud. Uso XmlHttpRequest para AJAX y debería usarcon credenciales opción para enviar cookies. Pero en las solicitudes de dominio cruzado, los navegadores enviarán una solicitud de verificación previa (OPCIÓN) antes de cada solicitud de AJAX. Y los navegadores no enviarán cookies con la solicitud de OPCIÓN. Esto es un problema para mí porque la API del lado del servidor no podría responder correctamente a una solicitud de OPCIÓN si no está autorizada.

¿Cuál es la solución adoptada?

Respuestas a la pregunta(1)

Su respuesta a la pregunta