NodeJS

Cómo autorizar a los usuarios mediante Google OAuth en el nodo.js

Cómo autorizar a los usuarios mediante Google OAuth en el nodo.js

La autorización abierta, también conocida como OAuth, es un protocolo que se utiliza para autorizar a un usuario en su sitio web utilizando algún servicio de terceros como Google, Github, Facebook, etc. El servicio de terceros comparte algunos datos (nombre, correo electrónico, foto de perfil, etc.) con su sitio web y luego autoriza al usuario en su nombre sin administrar las contraseñas y los nombres de usuario de su sitio web, y ahorrándoles a los usuarios muchos problemas adicionales.

Cómo funciona OAuth

Cuando un usuario hace clic en "Iniciar sesión con Google", lo lleva a la página de consentimiento de Google OAuth. Cuando el usuario acepta el consentimiento y autentica su identidad en Google, Google se pondrá en contacto con su sitio web como un servicio de terceros y autorizará al usuario en su nombre y compartirá algunos datos con su sitio web. De esta manera, el usuario puede ser autorizado sin administrar las credenciales de su sitio web por separado.

Implementando Google OAuth usando Node.js

Casi todos los lenguajes de programación proporcionan diferentes bibliotecas para implementar Google Oauth para autorizar a los usuarios. Nodo.js proporciona las bibliotecas 'passport' y 'passport-google-oauth20' para implementar google oauth. En este artículo, implementaremos un protocolo oauth para autorizar a los usuarios a usar node.js.

Crea un proyecto en Google

El primer paso para implementar Google OAuth es crear un proyecto en la consola de desarrollo de Google para su sitio web. Este proyecto se utiliza para obtener las claves de API que se utilizan para realizar solicitudes a Google para la autenticación abierta. Vaya al siguiente enlace y cree su proyecto.

https: // consola.desarrolladores.Google.com

Configuración de Google Project

Después de crear el proyecto, acceda al proyecto y seleccione "Pantalla de consentimiento de OAuth" en el menú del lado izquierdo.

Haga clic en el botón 'crear' y proporcione todos los detalles de su proyecto. Haga clic en "Guardar y continuar" para continuar.

Ahora proporcione el alcance de su proyecto. Los ámbitos son los tipos de permisos para acceder a los datos del usuario desde una cuenta de Google. Debe configurar los permisos para obtener datos de usuario específicos de su cuenta de Google. Haga clic en "Guardar y continuar."

Ahora agregue los usuarios de prueba al proyecto si lo desea. Los usuarios de prueba son los únicos usuarios permitidos que pueden acceder a su aplicación web en el modo de prueba. Por ahora, no ingresaremos ningún usuario de prueba y haremos clic en "Guardar y continuar" para pasar a la página de resumen del proyecto.

Revise su proyecto en la página de resumen y guarde la configuración. Ahora generaremos credenciales para nuestro proyecto. Seleccione la pestaña 'Credenciales' en el menú del lado izquierdo y haga clic en el botón 'Crear credenciales' en la parte superior para generar OAuth 2.0 ID de cliente.

En el menú desplegable, seleccione 'ID de cliente OAuth' y especifique el tipo de aplicación como 'Aplicación web' y el nombre de su aplicación.

En la misma página, debemos proporcionar dos URI, los 'Orígenes de JavaScript autorizados' y los 'URI de redireccionamiento autorizados'. Los 'Orígenes de JavaScript autorizados' es el origen HTTP de su aplicación web y no puede tener ninguna ruta. El 'URI de redireccionamiento autorizado' es el URI exacto con una ruta a la que se redirigirá al usuario después de la autenticación de Google.

Después de ingresar todas las entradas requeridas, haga clic en 'crear' para crear credenciales OAuth.

Nodo de inicio.Proyecto js

Hasta ahora, hemos creado un proyecto de Google para autorizar a los usuarios para nuestra aplicación utilizando Google. Ahora vamos a iniciar el nodo.js proyecto para implementar oauth. Cree un directorio llamado 'auth' e inicie el proyecto express.

[correo electrónico protegido]: ~ $ mkdir auth
[correo electrónico protegido]: ~ $ cd auth
[correo electrónico protegido]: ~ $ npm init -y

Instalación de paquetes npm necesarios

Para implementar Google OAuth usando el nodo.js, necesitamos instalar algunos paquetes npm. Usaremos 'passport', 'express', 'path' y 'passport-google-oauth20'. Instale estos paquetes usando npm.

[correo electrónico protegido]: ~ $ npm instalar pasaporte expreso pasaporte-google-oauth20 ruta

Nodo de escritura.código js

En primer lugar, escribiremos dos páginas web html simples, la que tiene un botón, y autorizaremos al usuario cuando haga clic en el botón. La segunda página será autorizada y el usuario será redirigido a la página autorizada después de la autorización. Crea un archivo 'public / index.html '.



OAuth


Autorizar aquí

Ahora cree un archivo 'público / éxito.html 'con el siguiente contenido.



OAuth


Autorizado



Después de crear páginas web, ahora escribiremos código para autorizar a los usuarios a usar google oauth. Crear un índice de archivo.js '.

// importando paquetes requeridos
const express = require ('express');
const passport = require ('pasaporte');
const ruta = require ('ruta');
const GoogleStrategy = require ('pasaporte-google-oauth20').Estrategia;
aplicación constante = express ();
// definiendo parámetros
// ID de cliente es el parámetro que obtendremos de la consola de desarrollador de Google
CLIENT_ID = ”xxxxxxx”;
// el secreto del cliente también se tomará de la consola de desarrollador de Google
CLIENT_SECRET = ”xxxxx”;
// el usuario será redirigido a CALLBACK_URL después de la autorización
CALLBACK_URL = ”http: // localhost: 8000 / autorizado”;
// el número de puerto debe ser el mismo que el definido en la consola del desarrollador
PUERTO = 8000;
// configurar middleware de pasaporte
aplicación.usar (pasaporte.inicializar());
aplicación.usar (pasaporte.sesión());
pasaporte.serializeUser (function (id, done)
hecho (nulo, id);
);
pasaporte.deserializeUser (function (id, done)
hecho (nulo, id);
);
// el siguiente middleware se ejecutará siempre que el pasaporte. Se llama al método de autenticación y devuelve diferentes parámetros definidos en el alcance.
pasaporte.use (new GoogleStrategy (
clientID: CLIENT_ID,
clientSecret: CLIENT_SECRET,
callbackURL: CALLBACK_URL
,
función asíncrona (accessToken, refreshToken, perfil, correo electrónico, cb)
return cb (nulo, correo electrónico.identificación);

));
// página de inicio de servicio para la aplicación
aplicación.obtener ('/', (req, res) =>

res.sendFile (ruta.unirse (__ dirname + '/ public / index.html '));
);
// página de éxito de servicio para la aplicación
aplicación.get ('/ éxito', (req, res) =>

res.sendFile (ruta.unirse (__ dirname + '/ public / success.html '));
);
// el usuario será redirigido a la página de autenticación de Google cada vez que acceda a la ruta '/ google / auth'.
aplicación.get ('/ google / auth',
pasaporte.autenticar ('google', alcance: ['perfil', 'correo electrónico'])
);
// La redirección de fallos de autenticación se define en la siguiente ruta
aplicación.obtener ('/ autorizado',
pasaporte.autenticar ('google', failureRedirect: '/'),
(req, res) =>

res.redireccionar ('/ éxito');

);
// servidor en ejecución
aplicación.escuchar (PUERTO, () =>

consola.log ("El servidor se está ejecutando en el puerto" + PUERTO)
)

Prueba de Google OAuth

Ahora nuestra aplicación está lista y podemos probar si autoriza a los usuarios que usan google oauth. Vaya al directorio raíz y ejecute la aplicación.

[correo electrónico protegido]: ~ $ índice de nodo.js

Ahora ingrese la URL de su aplicación en el navegador.

http: // localhost: 8000

Muestra la página de inicio con una etiqueta de anclaje.

Cuando hacemos clic en 'Autorizar aquí', se redirigirá a la página de Google Oauth.

El nombre de su aplicación "Prueba" se muestra en la página de autenticación de Google. Cuando autorice su cuenta, lo llevará a la página autorizada.

Conclusión

Administrar nombres de usuario y contraseñas para diferentes aplicaciones web no es una tarea feliz para los usuarios. Muchos usuarios abandonan su aplicación web sin registrar su cuenta solo porque no quieren administrar las credenciales. El proceso de autorización en su aplicación web o sitio web se puede simplificar mediante el uso de servicios de terceros como Google, Facebook, etc. Estos servicios autorizan a los usuarios en su nombre, y el usuario no necesita administrar las credenciales por separado. En este artículo, hemos implementado el protocolo oauth de Google para autorizar a los usuarios a utilizar Node.js.

SuperTuxKart para Linux
SuperTuxKart es un gran título diseñado para ofrecerte la experiencia Mario Kart de forma gratuita en tu sistema Linux. Es bastante desafiante y diver...
Tutorial de Battle for Wesnoth
The Battle for Wesnoth es uno de los juegos de estrategia de código abierto más populares que puedes jugar en este momento. Este juego no solo ha esta...
0 A.D. Tutorial
De los muchos juegos de estrategia que existen, 0 A.D. logra destacarse como un título completo y un juego táctico muy profundo a pesar de ser de códi...