Estoy tratando de entender cómo implementar un flujo de Código de Autorización OAuth 2 cuando tengo una aplicación JS de una sola página y una API REST. El objetivo es garantizar el acceso a la API REST mediante la descarga de la autenticación al proveedor de OAuth.
Actualmente mi flujo se ve como:
1)
+--------------------+ +----------------+
| JS Single Page App | - redirect -> | OAuth Provider | - user enters credentials
+--------------------+ +----------------+
2)
+----------------+ +----------+
| OAuth Provider | - redirect with temporary code -> | REST API |
+----------------+ +----------+
3)
+----------+ +----------------+
| REST API | - request access token using code -> | OAuth Provider |
+----------+ <- return access token ------------- +----------------+
¿Qué debo hacer ahora? Mi entendimiento actual es que debo redirigir al usuario al recibir el token de acceso a una página que cargará la aplicación de una sola página JS nuevamente. ¿Pero debo compartir el token de acceso con la aplicación de una sola página y usar su presencia para autenticar cualquier solicitud que llegue a mi API REST, o es mejor crear un identificador separado y mantener una asignación del lado del servidor entre new-identifier->access_token
? De cualquier manera, ¿cuál sería la mejor manera de transferir el identificador al cliente? Preferiría no mantener ninguna sesión y no mostrar el identificador en la barra de URL de la página redirigida. Lo único que puedo pensar en este momento es crear una cookie temporal que la aplicación de una sola página pueda leer y luego borrar, pero de alguna manera eso se siente un poco torpe.