Estamos desarrollando una aplicación Angular2 / NodeJS de una sola página que tendrá un formulario web para que nuestros usuarios puedan completar y enviar. No tenemos ninguna aplicación web para que nuestros usuarios inicien sesión (por lo tanto, no hay SSO), pero nuestro los usuarios inician sesión en nuestras aplicaciones asociadas, que pueden ser una aplicación web o dispositivo móvil, cada una con su propio mecanismo de autenticación. Nuestras aplicaciones asociadas básicamente llaman a nuestra API para obtener varios contenidos y mostrarlos en su interfaz de usuario. Ahora, uno de nuestros contenidos tendrá el enlace a la nueva aplicación de formulario que estamos desarrollando.
Queremos asegurar la llamada a la aplicación de Formulario de tal manera que la solicitud solo pueda ser activada desde nuestras aplicaciones asociadas y desde ningún otro lugar. Las aplicaciones asociadas no pueden impedir que el usuario copie la URL, pero queremos asegurarnos de que la solicitud haya llegado desde nuestras aplicaciones asociadas.
¿Cuál es la mejor manera de lograr esto con una codificación mínima o nula para nuestros socios, ya que no tenemos control sobre sus ciclos de desarrollo o lanzamiento? Pocas de las opciones que estamos evaluando
Opción 1:
Comprueba el encabezado http, Referer. enlace . Esta puede no ser la solución correcta como a) se puede falsificar fácilmente ( enlace ) y b) El cliente puede ser una aplicación móvil y decidir no enviar el encabezado
Opción 2:
Otra opción sería que nuestros socios pasen un token como un parámetro oculto. Entonces, suponiendo que cualquier usuario no experto en tecnología no buscará en la fuente de la página para encontrar lo que es el token. Por supuesto, esto puede requerir cierta actividad de desarrollo de nuestros socios que nos gustaría evitar.
¿Hay alguna otra solución elegante que podamos probar?