NodeJS

Sådan godkendes brugere ved hjælp af Google OAuth i node.js

Sådan godkendes brugere ved hjælp af Google OAuth i node.js

Åben autorisation, også kendt som OAuth, er en protokol, der bruges til at autorisere en bruger på dit websted ved hjælp af en tredjepartstjeneste som Google, Github, Facebook osv. Tredjeparts service deler nogle data (navn, e-mail, profilbillede osv.) med dit websted og autoriserer derefter brugeren på dens vegne uden at administrere adgangskoder og brugernavne til dit websted og sparer brugerne en masse ekstra problemer.

Sådan fungerer OAuth

Når en bruger klikker på "Login med Google", fører den brugeren til Google OAuth-samtykke-siden. Når brugeren accepterer samtykke og godkender sin identitet på Google, vil Google kontakte dit websted som en tredjepartstjeneste og autorisere brugeren på dens vegne og dele nogle data med dit websted. På denne måde kan brugeren godkendes uden at administrere legitimationsoplysningerne til dit websted separat.

Implementering af Google OAuth ved hjælp af Node.js

Næsten alle programmeringssprogene leverer forskellige biblioteker til at implementere google oauth for at autorisere brugere. Node.js leverer 'pas' og 'pas-google-oauth20' biblioteker til implementering af google oauth. I denne artikel implementerer vi en oauth-protokol, der giver brugerne tilladelse til at bruge node.js.

Opret et projekt på Google

Det første skridt til at implementere Google OAuth er at oprette et projekt på google-udviklerkonsollen til dit websted. Dette projekt bruges til at få API-nøglerne brugt til at stille anmodninger til Google om åben godkendelse. Gå til følgende link, og opret dit projekt.

https: // konsol.udviklere.google.com

Konfiguration af Google Project

Når du har oprettet projektet, skal du gå ind i projektet og vælge “OAuth-samtykke-skærm” fra menuen til venstre.

Klik på knappen 'Opret' og angiv alle detaljer om dit projekt. Klik på "Gem og fortsæt" for at komme videre.

Giv nu omfanget af dit projekt. Omfang er de typer tilladelser til at få adgang til brugerens data fra en google-konto. Du skal konfigurere tilladelserne for at få specifikke brugerdata fra din google-konto. Klik på “Gem og fortsæt.”

Tilføj nu testbrugerne til projektet, hvis du vil. Testbrugere er de eneste tilladte brugere, der har adgang til din webapplikation i testtilstand. For nu vil vi ikke indtaste nogen testbruger og klikke på "Gem og fortsæt" for at gå videre til oversigtssiden for projektet.

Gennemgå dit projekt på oversigtssiden, og gem konfigurationen. Nu genererer vi legitimationsoplysninger til vores projekt. Vælg fanen 'Legitimationsoplysninger' i menuen til venstre, og klik på knappen 'Opret legitimationsoplysninger' for at generere OAuth 2.0 klient-id'er.

I rullemenuen skal du vælge 'OAuth-klient-id' og angive applikationstypen som 'webapplikation' og navnet på din applikation.

På den samme side skal vi give to URI'er, 'Autoriserede Javascript-oprindelser' og 'Autoriserede omdirigerings-URI'er'. Den 'autoriserede javascript-oprindelse' er HTTP-oprindelsen til din webapplikation, og den kan ikke have nogen sti. De 'Autoriserede omdirigerings-URI'er' er den nøjagtige URI med en sti, hvor brugeren omdirigeres efter google-godkendelse.

Når du har indtastet alle de krævede poster, skal du klikke på 'Opret' for at oprette OAuth-legitimationsoplysninger.

Indledende knude.js projekt

Indtil videre har vi oprettet et google-projekt for at godkende brugere til vores applikation ved hjælp af google. Nu skal vi starte noden.js projekt til implementering af oauth. Opret en mappe med navnet 'auth', og start ekspresprojektet.

[e-mail-beskyttet]: ~ $ mkdir-godkendelse
[e-mail-beskyttet]: ~ $ cd-godkendelse
[e-mail-beskyttet]: ~ $ npm init -y

Installation af krævede npm-pakker

At implementere Google OAuth ved hjælp af node.js, vi skal installere nogle npm-pakker. Vi bruger 'pas', 'ekspres', 'sti' og 'pas-google-oauth20'. Installer disse pakker ved hjælp af npm.

[e-mailbeskyttet]: ~ $ npm installer eksprespas pas-google-oauth20 sti

Skriveknude.js kode

Først og fremmest vil vi skrive to enkle html-websider, den ene med en knap, og autorisere brugeren, når der klikkes på knappen. Den anden side godkendes, og brugeren omdirigeres til den autoriserede side efter godkendelse. Opret en fil 'offentlig / indeks.html '.



OAuth


Godkend her

Opret nu en fil 'offentlig / succes.html 'med følgende indhold.



OAuth


Autoriseret



Efter oprettelse af websider skriver vi nu kode for at give brugerne tilladelse til at bruge google oauth. Opret en fil 'indeks.js '.

// import af nødvendige pakker
const express = kræve ('express');
const pas = kræve ('pas');
const path = kræve ('path');
const GoogleStrategy = kræv ('pas-google-oauth20').Strategi;
const app = express ();
// definerer parametre
// klient-id er den parameter, vi får fra google-udviklerkonsollen
CLIENT_ID = ”xxxxxxx”;
// klienthemmelighed tages også fra google-udviklerkonsollen
CLIENT_SECRET = ”xxxxx”;
// bruger omdirigeres til CALLBACK_URL efter godkendelse
CALLBACK_URL = ”http: // localhost: 8000 / autoriseret”;
// portnummer skal være det samme som defineret i udviklerkonsollen
PORT = 8000;
// konfiguration af pas mellemware
app.brug (pas.initialisere ());
app.brug (pas.session());
pas.serializeUser (funktion (id, færdig)
færdig (null, id);
);
pas.deserializeUser (funktion (id, færdig)
færdig (null, id);
);
// følgende middleware kører, når pas. Godkendelsesmetode kaldes og returnerer forskellige parametre defineret i omfanget.
pas.brug (ny GoogleStrategy (
klient-id: CLIENT_ID,
clientSecret: CLIENT_SECRET,
callbackURL: CALLBACK_URL
,
async-funktion (accessToken, refreshToken, profil, e-mail, cb)
return cb (null, e-mail.id);

));
// serverer startside til applikationen
app.get ('/', (req, res) =>

res.sendFile (sti.join (__ dirname + '/ public / index.html '));
);
// serverer succes side for applikationen
app.get ('/ success', (req, res) =>

res.sendFile (sti.join (__ dirname + '/ public / success.html '));
);
// bruger omdirigeres til google auth-siden, når den rammer '/ google / auth' ruten.
app.get ('/ google / auth',
pas.godkende ('google', scope: ['profile', 'email'])
);
// omdirigering af godkendelsesfejl defineres i følgende rute
app.få ('/ autoriseret',
pas.godkende ('google', failureRedirect: '/'),
(req, res) =>

res.omdirigere ('/ succes');

);
// kører server
app.lyt (PORT, () =>

konsol.log (“Server kører på Port” + PORT)
)

Test af Google OAuth

Nu er vores applikation klar, og vi kan teste, om den godkender brugerne ved hjælp af google oauth. Gå til rodmappen, og kør applikationen.

[e-mail-beskyttet]: ~ $ node-indeks.js

Indtast nu din ansøgnings url i browseren.

http: // localhost: 8000

Det viser hjemmesiden med et ankermærke.

Når vi klikker på 'Autoriser her', omdirigeres det til google oauth-siden.

Dit applikationsnavn 'Test' vises på Googles godkendelsesside. Når du godkender din konto, fører den dig til den autoriserede side.

Konklusion

Administration af brugernavne og adgangskoder til forskellige webapplikationer er ikke en glad opgave for brugerne. Mange brugere forlader din webapplikation uden at registrere deres konto, bare fordi de ikke ønsker at administrere legitimationsoplysninger. Autorisationsprocessen på din webapplikation eller dit websted kan forenkles ved hjælp af tredjeparts tjenester som Google, Facebook osv. Disse tjenester godkender brugere på deres vegne, og brugeren behøver ikke at administrere legitimationsoplysninger separat. I denne artikel har vi implementeret google oauth-protokollen for at give brugerne tilladelse til at bruge Node.js.

Sådan udvikler du et spil på Linux
For et årti siden ville ikke mange Linux-brugere forudsige, at deres foretrukne operativsystem en dag ville være en populær spilplatform til kommercie...
Open Source-porte med kommercielle spilmotorer
Gratis, open source og cross-platform spilmotorgendringer kan bruges til at spille gamle såvel som nogle af de temmelig nylige spiltitler. Denne artik...
Bedste kommandoliniespil til Linux
Kommandolinjen er ikke kun din største allierede, når du bruger Linux, den kan også være kilde til underholdning, fordi du kan bruge den til at spille...