aislamiento de API para varias aplicaciones de una sola página en el mismo dominio

0

Tengo un caso en el que quiero ejecutar varias aplicaciones de una sola página en el mismo dominio. Esas aplicaciones deberían tener acceso a un conjunto específico de API.

Ejemplo:

  • myapp.example/profile : aloja la aplicación de perfil
  • myapp.example/api/profile : devuelve el perfil de usuario
  • myapp.example/playground : aloja la aplicación del patio de juegos
  • myapp.example/api/playground/user_data : API genérica para el patio de recreo para almacenar algunos datos.

No quiero que el SPA que se ejecuta en el área de juegos pueda acceder al perfil API.

Mi problema actual es: ¿Cómo puedo pasar un token / secret / .. a la aplicación /profile a la que no puedo acceder con la aplicación /playground , especialmente cuando quiero mantener al usuario conectado (por ejemplo, a través de cookie, localstorage, ...). No pude encontrar ningún esquema de técnica / autorización que admita esto correctamente.

La técnica con la que estoy experimentando actualmente es:

  • cuando la aplicación /profile se reinicia, adjunte un encabezado set-cookie: token=JWT;Path=/profile donde JWT contenga algún tipo de información de alcance de API (por ejemplo, profile-scope ), así como la identificación del usuario actual. Enviar el token en una cookie debería hacerlo invisible para otras rutas.
  • Según la especificación de XHR, el encabezado set-cookie nunca puede estar expuesto a los XHR directamente
  • Cuando se inicializa la aplicación, lea el token a través de document.cookie
  • Cuando la aplicación realiza una solicitud, adjunte el token en un encabezado HTTP (además de la información de autenticación a través de cookie / encabezado)
  • En el lado del servidor API, compruebe si el token enviado en el encabezado contiene el alcance profile-scope requerido para acceder a esta API

Hasta ahora no pude acceder al token a través de las solicitudes de /playground . ¿Funciona o me falta algo? ¿Existen técnicas establecidas para este tipo de problema?

    
pregunta frow 05.09.2018 - 16:01
fuente

0 respuestas

Lea otras preguntas en las etiquetas