NodeJS

Gebruikers autoriseren met Google OAuth in Node.js

Gebruikers autoriseren met Google OAuth in Node.js

Open autorisatie, ook bekend als OAuth, is een protocol dat wordt gebruikt om een ​​gebruiker op uw website te autoriseren met behulp van een externe service zoals Google, Github, Facebook, enz. De service van derden deelt enkele gegevens (naam, e-mail, profielfoto, enz.).) met uw website en autoriseert vervolgens de gebruiker namens hem zonder de wachtwoorden en gebruikersnamen voor uw website te beheren, en bespaart de gebruikers veel extra moeite.

Hoe OAuth werkt

Wanneer een gebruiker op "Inloggen met Google" klikt, wordt de gebruiker naar de Google OAuth-toestemmingspagina geleid. Wanneer de gebruiker akkoord gaat met de toestemming en zijn identiteit op Google verifieert, zal Google contact opnemen met uw website als een externe service en de gebruiker namens hem autoriseren en enkele gegevens delen met uw website. Op deze manier kan de gebruiker worden geautoriseerd zonder de inloggegevens voor uw website afzonderlijk te beheren.

Google OAuth implementeren met Node.js

Bijna alle programmeertalen bieden verschillende bibliotheken om Google OAuth te implementeren om gebruikers te autoriseren. Knooppunt.js biedt 'passport' en 'passport-google-oauth20' bibliotheken om google oauth te implementeren. In dit artikel zullen we een OAuth-protocol implementeren om gebruikers te autoriseren om node te gebruiken use.js.

Een project maken op Google

De eerste stap om Google OAuth te implementeren, is het maken van een project op de Google Developer Console voor uw website. Dit project wordt gebruikt om de API-sleutels te verkrijgen die worden gebruikt om verzoeken aan Google te doen voor open authenticatie. Ga naar de volgende link en maak je project aan.

https://console.ontwikkelaars.google.com

Google Project configureren

Nadat u het project hebt gemaakt, gaat u naar het project en selecteert u "OAuth-toestemmingsscherm" in het menu aan de linkerkant.

Klik op de knop 'creëren' en geef alle details van uw project op. Klik op "Opslaan en doorgaan" om verder te gaan.

Geef nu de reikwijdte van uw project op. Bereiken zijn de soorten machtigingen om toegang te krijgen tot de gegevens van de gebruiker vanuit een Google-account. U moet de machtigingen instellen om specifieke gebruikersgegevens van uw Google-account te krijgen. Klik op "Opslaan en doorgaan".”

Voeg nu de testgebruikers toe aan het project als je wilt. Testgebruikers zijn de enige toegestane gebruikers die toegang hebben tot uw webtoepassing in de testmodus. Voorlopig zullen we geen testgebruiker invoeren en klikken op "Opslaan en doorgaan" om door te gaan naar de overzichtspagina van het project.

Bekijk uw project op de overzichtspagina en sla de configuratie op. Nu zullen we referenties voor ons project genereren. Selecteer het tabblad 'Inloggegevens' in het menu aan de linkerkant en klik op de knop 'Inloggegevens maken' bovenaan om OAuth 2 te genereren.0 klant-ID's.

Selecteer in het vervolgkeuzemenu 'OAuth-client-ID' en specificeer het type applicatie als 'Webapplicatie' en de naam van uw applicatie.

Op dezelfde pagina moeten we twee URI's opgeven, de 'Authorized Javascript Origins' en de 'Authorized redirect URI's'. De 'Geautoriseerde javascript-oorsprong' is de HTTP-oorsprong van uw webtoepassing en mag geen pad hebben. De 'Authorized redirect URI's' is de exacte URI met een pad waarnaar de gebruiker wordt omgeleid na google-authenticatie.

Nadat u alle vereiste gegevens hebt ingevoerd, klikt u op 'creëren' om OAuth-referenties aan te maken.

Initiërend knooppunt.js-project

Tot nu toe hebben we een Google-project gemaakt om gebruikers te autoriseren voor onze applicatie met behulp van Google. Nu gaan we het knooppunt initiëren.js-project om OAuth te implementeren. Maak een map met de naam 'auth' en start het express-project.

[e-mail beveiligd]:~$ mkdir auth
[e-mail beveiligd]:~$ cd auth
[e-mail beveiligd]:~$ npm init -y

Vereiste npm-pakketten installeren

Google OAuth implementeren met node.js, we moeten enkele npm-pakketten installeren. We gebruiken 'paspoort', 'express', 'pad' en 'passport-google-oauth20'. Installeer deze pakketten met npm.

[email protected]:~$ npm install express paspoort paspoort-google-oauth20 pad

Schrijfknooppunt.js-code

Allereerst zullen we twee eenvoudige html-webpagina's schrijven, die met een knop, en de gebruiker autoriseren wanneer op de knop wordt geklikt. De tweede pagina wordt geautoriseerd en de gebruiker wordt na autorisatie doorgestuurd naar de geautoriseerde pagina. Maak een bestand 'public/index' aan.html'.



OAuth


Hier autoriseren

Maak nu een bestand 'public/success' aan.html' met de volgende inhoud.



OAuth


Geautoriseerd



Nadat we webpagina's hebben gemaakt, zullen we nu code schrijven om de gebruikers te machtigen om google oauth te gebruiken. Maak een bestand 'index' aan.js'.

// vereiste pakketten importeren
const express = vereisen('express');
const paspoort = vereisen('paspoort');
const pad = vereisen('pad');
const GoogleStrategy = vereisen('passport-google-oauth20').Strategie;
const-app = express();
// parameters definiëren
// client-ID is de parameter die we krijgen van de Google Developer Console
CLIENT_ID="xxxxxxx";
// clientgeheim wordt ook uit de google-ontwikkelaarsconsole gehaald
CLIENT_SECRET=”xxxxx”;
// gebruiker wordt na autorisatie doorgestuurd naar de CALLBACK_URL
CALLBACK_URL=”http://localhost:8000/geautoriseerd”;
// poortnummer moet hetzelfde zijn als gedefinieerd in de ontwikkelaarsconsole
POORT=8000;
// configureren van paspoort-middleware
app.gebruik (paspoort).initialiseren());
app.gebruik (paspoort).sessie());
paspoort.serializeUser( functie(id, klaar)
klaar (null, id);
);
paspoort.deserializeUser( functie(id, klaar)
klaar (null, id);
);
// volgende middleware wordt uitgevoerd wanneer paspoort. De authenticatiemethode wordt aangeroepen en retourneert verschillende parameters die zijn gedefinieerd in het bereik.
paspoort.gebruik(nieuwe GoogleStrategy(
klant-ID: CLIENT_ID,
clientSecret: CLIENT_SECRET,
callbackURL: CALLBACK_URL
,
asynchrone functie (accessToken, refreshToken, profiel, e-mail, cb)
retour cb(null, e-mail).ID kaart);

));
// serveren homepage voor de applicatie
app.get('/', (req, res) =>

res.sendFile(pad.join(__dirname + '/public/index.html'));
);
// het serveren van de succespagina voor de applicatie
app.get('/succes', (req, res) =>

res.sendFile(pad.join(__dirname + '/public/success.html'));
);
// gebruiker wordt omgeleid naar de google auth-pagina wanneer de '/google/auth'-route wordt bereikt.
app.get('/google/auth',
paspoort.authenticeren('google', scope: ['profile', 'email'])
);
// omleiding van authenticatiefout is gedefinieerd in de volgende route:
app.get('/geautoriseerd',
paspoort.authenticeren('google', failureRedirect: '/'),
(req, res) =>

onderzoek.omleiding('/succes');

);
// draaiende server
app.luister(POORT, () =>

troosten.log ("Server draait op poort " + POORT)
)

Google OAuth testen

Nu is onze applicatie klaar en kunnen we testen of deze de gebruikers autoriseert met behulp van google oauth. Ga naar de hoofdmap en voer de applicatie uit.

[e-mail beveiligd]:~$ node index.js

Voer nu de url van uw applicatie in de browser in.

http://localhost:8000

Het toont de startpagina met een ankertag.

Wanneer we op 'Hier autoriseren' klikken, wordt deze doorverwezen naar de Google OAuth-pagina.

Uw applicatienaam 'Test' wordt weergegeven op de Google-authenticatiepagina. Wanneer u uw account autoriseert, gaat u naar de geautoriseerde pagina.

Conclusie

Gebruikersnamen en wachtwoorden voor verschillende webapplicaties beheren is geen gelukkige taak voor gebruikers. Veel gebruikers verlaten uw webtoepassing zonder hun account te registreren, alleen omdat ze de inloggegevens niet willen beheren. Het autorisatieproces op uw webapplicatie of website kan worden vereenvoudigd door gebruik te maken van diensten van derden zoals Google, Facebook, enz. Deze services autoriseren gebruikers namens hen en de gebruiker hoeft de inloggegevens niet apart te beheren. In dit artikel hebben we het google oauth-protocol geïmplementeerd om gebruikers te autoriseren om Node . te gebruiken.js.

Linkermuisknop werkt niet op Windows 10
Als u een speciale muis gebruikt met uw laptop of desktopcomputer, maar de linkermuisknop werkt niet not op Windows 10/8/7 om wat voor reden dan ook, ...
Cursor springt of beweegt willekeurig tijdens het typen in Windows 10
Als u merkt dat uw muiscursor vanzelf springt of beweegt, automatisch, willekeurig tijdens het typen op een Windows-laptop of -computer, dan kunnen en...
De scrollrichting van de muis en touchpads omkeren in Windows 10
Muis en Touchpads maken computergebruik niet alleen eenvoudig, maar ook efficiënter en minder tijdrovend. We kunnen ons een leven zonder deze apparate...