Estamos implementando una aplicación web (US) que necesita intercambiar información confidencial con una aplicación web de terceros (THEM). La forma en que nos gustaría que funcione es que un usuario final haga clic en un hipervínculo, navegue a la aplicación web de terceros y mágicamente la información confidencial esté disponible para la aplicación web de terceros.
Como era de esperar, preferiríamos no enviar esa información confidencial junto con la URL que el usuario hizo clic. No controlamos la aplicación web de terceros, pero podemos imponer cómo se integran con nuestra aplicación web. Nos gustaría que esto sea lo más simple posible desde una perspectiva tecnológica (barra baja a la entrada, por así decirlo). Obviamente, tenemos control total sobre nuestra propia aplicación web.
Estábamos pensando en tener algún tipo de token de acceso que se pueda usar una vez, generando aleatoriamente, restringido en el tiempo.
- Suponemos que el usuario final ha sido identificado / autenticado.
- El usuario final hace clic en un enlace que obtiene un token de acceso de nuestra propia aplicación web. Dado que toda la información confidencial está disponible en el servidor, no es necesario compartirla con el navegador del usuario final. Almacenamos el token de acceso y su fecha y hora de caducidad junto con la información confidencial. La información confidencial no se puede derivar del token de acceso en sí. Nuestra aplicación web redirige el navegador del usuario final a la aplicación web de terceros con el token de acceso en la url de redirección.
- La aplicación web de terceros recibe la solicitud entrante y utiliza el token de acceso para obtener la información confidencial mediante la emisión de una solicitud del lado del servidor para que la información vuelva a nuestra aplicación web. Nuestra aplicación web devuelve la información confidencial y ahora la aplicación web de terceros puede utilizar dicha información. Obviamente, manejaremos la eliminación del token de acceso, la caducidad, etc.
Además de que alguien pueda obtener el token de acceso en tránsito y tener que asegurar el almacenamiento del token de acceso, así como la comunicación del lado del servidor entre nuestra aplicación y la aplicación de terceros, ¿ve algún otro agujero de seguridad? En lugar de lanzar nuestro propio , ¿existe algún estándar adoptado por ampliamente que podamos usar en su lugar?