hola tengo dos procesos
1.
¿Cómo puedo configurar estos dos procesos para que apunten a direcciones URL diferentes? Django apunta a api.abc.com/v1 y el nodo apunta a api.abc.com/v2 ?
2.
todo mi inicio de sesión de usuario está dentro de Django y MYSQL con OAuth. Puedo autenticar al usuario en Django.
Pero, ¿cómo se puede autenticar al usuario en la aplicación nodejs con el token enviado por Django REST OAuth?
Gracias.
Puede hacerlo de varias maneras, pero el método más conveniente sería usar un proxy inverso como nginx.
Configurar el proxy inverso para su aplicación Node y hacer exactamente lo mismo para su aplicación Django le permitirá tener fácilmente las rutas que necesita, en el mismo nombre de dominio y número de puerto solo que en una ruta diferente.
Otra opción sería enviar solicitudes de proxy desde la aplicación Node a la aplicación Django o al revés, pero eso requeriría cambiar sus aplicaciones en lugar de simplemente colocar un proxy frente a ellas.
Aquí hay algunas preguntas con información sobre cómo configurar proxies inversos para Node usando nginx, Apache e incluso Microsoft IIS:
Escenario A
Crea una URL en django ^v2/.*$ y luego realiza una solicitud desde la vista de django al proceso node.js. De esta manera, Django puede manejar la autenticación y los permisos del usuario, y el nodo puede ser independiente y no saber nada sobre la autenticación del usuario. Si necesita datos de usuario (identificación o algo así), puede inyectarlo en la solicitud como un encabezado o una cookie.
Escenario B Profundiza en la implementación de Django REST OAuth, busca dónde se almacenan los tokens en la base de datos y, en cada solicitud, toma el token de autenticación del encabezado/cookie y lo compara con el de la base de datos. Tendría que configurar nginx como un proxy inverso y enrutar todo el tráfico que va en url /v1/.*$ a la aplicación django, y todo el tráfico que va a /v2/.*/ a la aplicación de nodo.
Cualquiera de las opciones es factible, pero sugeriría el escenario A. Es más fácil, más rápido y mucho menos propenso a errores.