es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo identificar al usuario que otorgó el permiso de autorización?

Aquí está mi escenario:

-> front end React

-> backend Node

Estoy llevando a cabo la autenticación de usuarios utilizando JWT, es decir, cada vez que el frontend necesita algo, solicita al backend con la cabecera Authorization y un token de portador.

Mi duda es la siguiente:

Tengo un usuario “x” en mi sitio y para un caso de uso necesito que vincule su cuenta de Github a su cuenta existente en mi sitio.

Para eso, hace clic en el botón de vinculación de Github y va a https://github.com/login/oauth/authorize?client_id=xxxxxxx y da el permiso para compartir sus datos y es redirigido a la dirección de devolución proporcionada al crear la aplicación oauth en Github.

La ruta de devolución en mi servidor recibirá un código que luego se puede utilizar para acceder a un token que a su vez se puede utilizar para acceder a la cuenta de GitHub en nombre del usuario.

Pero la duda es cómo sé a qué usuario pertenece este código de devolución de llamada de Github? ¿Pertenece al usuario “x” u otra persona?

En un escenario normal, JWT podría ayudar a identificar al usuario, pero aquí, dado que la devolución de llamada se solicita desde GitHub, no hay un token de JWT, ¡así que no hay forma de identificar al usuario!

Espero que la pregunta esté clara, ¡gracias de antemano por ayudar!

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Solución para identificar al usuario del código de devolución de Github

    Para identificar al usuario al que pertenece el código de devolución de Github, puedes hacer uso del parámetro “state” en la URL de autorización de Github.

    Cuando el usuario hace clic en el botón “Vincular Github” en tu sitio, puedes generar una cadena única aleatoria y almacenarla en la sesión o base de datos del usuario junto con su ID de usuario (en este caso, usuario X). Luego, al redirigirlos a la URL de autorización de Github, puedes incluir esta cadena única como parámetro state en la URL.

    Una vez que el usuario complete el flujo de autorización de Github y sea redirigido de nuevo a la URL de devolución de llamada de tu sitio con el código, puedes obtener el parámetro state de los parámetros de la consulta y usarlo para buscar al usuario en tu base de datos. Si la cadena única coincide con la almacenada para el usuario X, entonces puedes proceder a vincular su cuenta de Github a su cuenta existente en tu sitio.

    El uso del parámetro state de esta manera proporciona una capa adicional de seguridad contra atacantes que puedan intentar interceptar el código de devolución de Github y utilizarlo para vincular su propia cuenta de Github a la cuenta de un usuario diferente en tu sitio.

Comments are closed.