La autorización abierta, también conocida como OAuth, es un protocolo utilizado 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 para su sitio web, y guardar a los usuarios muchos problemas adicionales.
Cómo funciona Oauth
Cuando un usuario hace clic en "Iniciar sesión con Google", lleva al usuario a la página de consentimiento de Google Oauth. Cuando el usuario acepta el consentimiento y autentica su identidad en Google, Google se comunicará 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 para su sitio web por separado.
Implementación de Google Oauth usando nodo.js
Casi todos los lenguajes de programación proporcionan diferentes bibliotecas para implementar Google OAuth para autorizar a los usuarios. Nodo.JS proporciona 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 desarrolladores de Google para su sitio web. Este proyecto se utiliza para obtener las claves API utilizadas para realizar solicitudes para Google para la autenticación abierta. GOTO el siguiente enlace y cree su proyecto:
.
Configuración del proyecto Google
Después de crear el proyecto, ingrese 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 seguir adelante.
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 pruebas son los únicos usuarios permitidos que pueden acceder a su aplicación web en modo de prueba. Por ahora, no ingresaremos a 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, tenemos que proporcionar dos URI, los 'Orígenes de JavaScript autorizados' y el 'URI de redirección autorizado'. El 'Orígenes JavaScript autorizados' es el origen HTTP de su aplicación web, y no puede tener ninguna ruta. El 'URI de redirección autorizado' es el URI exacto con una ruta donde el usuario será redirigido después de la autenticación de Google.
Después de ingresar todas las entradas requeridas, haga clic en 'Crear' para crear credenciales OAuth.
Inicio de nodo.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.proyecto JS para implementar OAuth. Cree un directorio llamado 'Auth' e inicie el proyecto Express.
ubuntu@ubuntu: ~ $ mkdir auth
Ubuntu@ubuntu: ~ $ CD Auth
ubuntu@ubuntu: ~ $ npm init -y
Instalación de paquetes NPM requeridos
Para implementar Google Oauth usando nodo.JS, necesitamos instalar algunos paquetes NPM. Usaremos 'pasaporte', 'expreso', 'ruta' y 'pasaporte-google-oauth20'. Instale estos paquetes con NPM.
Ubuntu@ubuntu: ~ $ npm install Passport Passport-google-oauth20
Nodo de escritura.código JS
En primer lugar, escribiremos dos páginas web simples HTML, la que tiene un botón y autorizaremos al usuario cuando se haga clic en el botón. La segunda página estará autorizada y el usuario será redirigido a la página autorizada después de la autorización. Crear un archivo 'público/índice.html '.
Ahora cree un archivo 'público/éxito.html 'con el siguiente contenido.
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 '.
// Importar paquetes requeridos
const express = require ('express');
const pasaporte = requirir ('pasaporte');
Const ruta = requerir ('ruta');
const googlestrategy = require ('pasaporte-google-oauth20').Estrategia;
const app = express ();
// Definición de parámetros
// Cliente ID es el parámetro que obtendremos de la consola de desarrollador de Google
Client_id = "xxxxxxxx";
// El secreto del cliente también se tomará de la consola del 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 se define en la consola del desarrollador
Puerto = 8000;
// Configuración del middleware de pasaporte
aplicación.Uso (pasaporte.inicializar());
aplicación.Uso (pasaporte.sesión());
pasaporte.SerializeUser (function (id, hecho)
hecho (nulo, id);
);
pasaporte.deserializeUser (function (id, hecho)
hecho (nulo, id);
);
// El siguiente middleware se ejecutará siempre que el pasaporte. Se llama método de autenticación y devuelve diferentes parámetros definidos en el alcance.
pasaporte.Use (nuevo Googlestrategy (
ClientID: Client_ID,
ClientSecret: client_secret,
callbackUrl: callback_url
,
Función Async (AccessToken, RefreshToken, perfil, correo electrónico, CB)
Devolver CB (NULL, correo electrónico.identificación);
));
// Sirviendo la página de inicio para la aplicación
aplicación.get ('/', (req, res) =>
resonancia.SendFile (ruta.unir (__ dirname + '/public/index.html '));
);
// Página de éxito para la aplicación
aplicación.Get ('/Success', (Req, Res) =>
resonancia.SendFile (ruta.Únete a (__ dirname + '/public/Success.html '));
);
// El usuario se redirigirá a la página de Auth Google cada vez que llegue a la ruta '/Google/Auth'.
aplicación.Get ('/Google/Auth',
pasaporte.Authenticate ('Google', alcance: ['perfil', 'correo electrónico'])
);
// La redirección de falla de autenticación se define en la siguiente ruta
aplicación.Obtener ('/autorizado',
pasaporte.Authenticate ('Google', FakeureRedIrect: '/'),
(req, res) =>
resonancia.Redirect ('/Success');
);
// Ejecutar servidor
aplicación.escuchar (puerto, () =>
consola.log ("El servidor se ejecuta 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 root y ejecute la aplicación.
Ubuntu@ubuntu: ~ $ node índice.js
Ahora ingrese la URL de su aplicación en el navegador.
Muestra la página de inicio con una etiqueta de anclaje.
Cuando hagamos clic en la 'autorización aquí', 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 autoriza 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 dejan su aplicación web sin registrar su cuenta solo porque no quieren administrar credenciales. El proceso de autorización en su aplicación o sitio web 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 credenciales por separado. En este artículo, hemos implementado el Protocolo de Google OAuth para autorizar a los usuarios a usar Node.js.