aplicación web que realiza una llamada a una API REST cuando ya está autenticado

2

Soy nuevo en ASP.NET Core y OpenID connect / AzureAD, así que estoy buscando alguna validación (o no) de mi enfoque. Durante las últimas semanas, he leído mucho y ha estado buscando en Google, mientras que he estado aprendiendo que esto no ha dado una respuesta exacta (aunque ha habido muchas fallas)

Tengo una aplicación web basada en el navegador que debe estar protegida con AzureAD, por lo que, como es de esperar, utiliza autenticación basada en cookies. Todo funciona bien.

También expongo una API dentro de la misma aplicación. No quiero usar autenticación basada en cookies debido a inquietudes de CSRF, y la necesidad de que la API sirva para el servicio de una aplicación móvil en una fecha posterior. He configurado la API para usar autenticación basada en JWT Bearer. También funciona bien (por ejemplo, llamando desde el cartero)

Una de las páginas de la aplicación web necesita hacer una llamada AJAX a la API, y no quiero / necesito convertir la aplicación en un SPA. Así que el enfoque que estoy intentando actualmente es este:

Cuando inicio sesión en la aplicación, estoy guardando en caché (del lado del servidor) los tokens que recibí de AzureAD. Cuando se visita la página con la llamada AJAX, estoy escribiendo el "id_token" en un campo oculto, y cuando necesito hacer la llamada AJAX, estoy leyendo el id_token en javascript y lo agrego como la "autorización" encabezado.

Todo esto funciona como un sueño, por lo que lo he estado buscando y buscando inquietudes: no puedo ver ningún problema de CSRF, ya que la llamada AJAX ya no está autorizada por cookies. Aunque estoy escribiendo un id_token en la página, el usuario tiene que estar autorizado (cookies) para ver esa página en primer lugar.

¿Hay algo que esté pasando por alto aquí?

    
pregunta Paul Nearney 14.06.2018 - 23:49
fuente

0 respuestas

Lea otras preguntas en las etiquetas