NodoJS

Come autorizzare gli utenti utilizzando Google OAuth in Node.js

Come autorizzare gli utenti utilizzando Google OAuth in Node.js

Open Authorization, noto anche come OAuth, è un protocollo utilizzato per autorizzare un utente sul tuo sito Web utilizzando alcuni servizi di terze parti come Google, Github, Facebook, ecc. Il servizio di terze parti condivide alcuni dati (nome, email, immagine del profilo, ecc.).) con il tuo sito Web e quindi autorizza l'utente per suo conto senza gestire le password e i nomi utente per il tuo sito Web e risparmiando agli utenti un sacco di problemi aggiuntivi.

Come funziona OAuth

Quando un utente fa clic su "Accedi con Google", porta l'utente alla pagina di consenso OAuth di Google. Quando l'utente accetta il consenso e autentica la sua identità su Google, Google contatterà il tuo sito web come servizio di terze parti e autorizzerà l'utente per suo conto e condividerà alcuni dati con il tuo sito web. In questo modo l'utente può essere autorizzato senza dover gestire separatamente le credenziali del proprio sito.

Implementazione di Google OAuth utilizzando Node.js

Quasi tutti i linguaggi di programmazione forniscono diverse librerie per implementare google oauth per autorizzare gli utenti. Nodo.js fornisce le librerie "passport" e "passport-google-oauth20" per implementare google oauth. In questo articolo implementeremo un protocollo oauth per autorizzare gli utenti a utilizzare il nodo.js.

Crea un progetto su Google

Il primo passo per implementare Google OAuth è creare un progetto sulla console per sviluppatori di Google per il tuo sito web. Questo progetto viene utilizzato per ottenere le chiavi API utilizzate per effettuare richieste a Google per l'autenticazione aperta. Vai al seguente link e crea il tuo progetto.

https://console.sviluppatori.Google.come

Configurazione del progetto Google

Dopo aver creato il progetto, vai nel progetto e seleziona "Schermata di consenso OAuth" dal menu di sinistra.

Clicca sul pulsante 'crea' e fornisci tutti i dettagli del tuo progetto. Fai clic su "Salva e continua" per andare avanti.

Ora fornisci l'ambito del tuo progetto. Gli ambiti sono i tipi di autorizzazioni per accedere ai dati dell'utente da un account Google. Devi impostare le autorizzazioni per ottenere dati utente specifici dal tuo account Google. Fai clic su "Salva e continua"."

Ora aggiungi gli utenti di prova al progetto se vuoi. Gli utenti di test sono gli unici utenti autorizzati che possono accedere alla tua applicazione web in modalità di test. Per ora non inseriremo nessun utente di prova e clicchiamo su “Salva e Continua” per passare alla pagina di riepilogo del progetto.

Rivedi il tuo progetto nella pagina di riepilogo e salva la configurazione. Ora genereremo le credenziali per il nostro progetto. Seleziona la scheda "Credenziali" nel menu a sinistra e fai clic sul pulsante "Crea credenziali" in alto per generare OAuth 2.0 ID cliente.

Dal menu a discesa, seleziona "ID client OAuth" e specifica il tipo di applicazione come "Applicazione Web" e il nome della tua applicazione.

Nella stessa pagina, dobbiamo fornire due URI, le "Origini JavaScript autorizzate" e le "URI di reindirizzamento autorizzate". "Origini javascript autorizzate" è l'origine HTTP della tua applicazione web e non può avere alcun percorso. Gli "URI di reindirizzamento autorizzati" sono l'URI esatto con un percorso in cui l'utente verrà reindirizzato dopo l'autenticazione di Google.

Dopo aver inserito tutte le voci richieste, fare clic su "crea" per creare le credenziali OAuth.

Avvio del nodo.js Project

Finora abbiamo creato un progetto google per autorizzare gli utenti per la nostra applicazione utilizzando google. Ora avvieremo il nodo.js progetto per implementare oauth. Crea una directory chiamata 'auth' e avvia il progetto express.

[email protected]:~$ mkdir auth
[email protected]:~$ cd auth
[email protected]:~$ npm init -y

Installazione dei pacchetti npm richiesti

Per implementare Google OAuth utilizzando node.js, dobbiamo installare alcuni pacchetti npm. Useremo 'passport', 'express', 'path' e 'passport-google-oauth20'. Installa questi pacchetti usando npm.

[email protected]:~$ npm installa il percorso express passaporto passaporto-google-oauth20

Nodo di scrittura.js codice

Prima di tutto, scriveremo due semplici pagine web html, quella con un pulsante, e autorizzeremo l'utente quando cliccato sul pulsante. La seconda pagina sarà autorizzata e l'utente verrà reindirizzato alla pagina autorizzata dopo l'autorizzazione. Crea un file "pubblico/indice".html'.



OAuth


Autorizza qui

Ora crea un file "pubblico/successo".html' con il seguente contenuto.



OAuth


Autorizzato



Dopo aver creato le pagine web, ora scriveremo il codice per autorizzare gli utenti a utilizzare google oauth. Crea un file "indice".js'.

// importazione dei pacchetti richiesti
const express = require('express');
const passaporto = require('passaporto');
const percorso = require('percorso');
const GoogleStrategy = require('passport-google-oauth20').Strategia;
const app = express();
// definizione dei parametri
// id client è il parametro che otterremo dalla console per sviluppatori di Google
CLIENT_ID="xxxxxxx";
// il segreto del client verrà preso anche dalla console per sviluppatori di Google
CLIENT_SECRET="xxxx";
// l'utente verrà reindirizzato al CALLBACK_URL dopo l'autorizzazione
CALLBACK_URL=”http://localhost:8000/authorized”;
// il numero di porta deve essere lo stesso definito nella console dello sviluppatore
PORTA=8000;
// configurazione del middleware del passaporto
app.utilizzare (passaporto.inizializzare());
app.utilizzare (passaporto.sessione());
passaporto.serializeUser( function(id, done)
done(null, id);
);
passaporto.deserializeUser( function(id, done)
done(null, id);
);
// il seguente middleware verrà eseguito ogni volta che passaporto. Viene chiamato il metodo Authenticate e restituisce diversi parametri definiti nell'ambito.
passaporto.use(new GoogleStrategy(
IDcliente: ID_Cliente,
clientSecret: CLIENT_SECRET,
callbackURL: CALLBACK_URL
,
funzione asincrona (accessToken, refreshToken, profilo, email, cb)
return cb(null, email.id);

));
// serve la home page dell'applicazione
app.get('/', (req, res) =>

res.inviaFile(percorso.join(__dirname + '/public/index.html'));
);
// serve la pagina di successo per l'applicazione
app.get('/success', (req, res) =>

res.inviaFile(percorso.join(__dirname + '/public/success.html'));
);
// l'utente verrà reindirizzato alla pagina di autenticazione di google ogni volta che raggiunge il percorso '/google/auth'.
app.get('/google/auth',
passaporto.autentica('google', scope: ['profilo', 'email'])
);
// il reindirizzamento dell'errore di autenticazione è definito nel seguente percorso
app.get('/autorizzato',
passaporto.authenticate('google', failureRedirect: '/'),
(req, res) =>

res.redirect('/successo');

);
// server in esecuzione
app.ascolta(PORTA, () =>

console.log("Il server è in esecuzione sulla porta" + PORTA)
)

Test di Google OAuth

Ora la nostra applicazione è pronta e possiamo verificare se autorizza gli utenti utilizzando google oauth. Vai alla directory principale ed esegui l'applicazione.

[email protected]:~$ indice del nodo.js

Ora inserisci l'URL della tua applicazione nel browser.

http://localhost:8000

Mostra la home page con un tag di ancoraggio.

Quando facciamo clic su "Autorizza qui", verrà reindirizzato alla pagina di google oauth.

Il nome della tua applicazione "Test" viene visualizzato nella pagina di autenticazione di Google. Quando autorizzi il tuo account, ti porterà alla pagina autorizzata.

Conclusione

La gestione di nomi utente e password per diverse applicazioni Web non è un compito felice per gli utenti. Molti utenti lasciano la tua applicazione web senza registrare il proprio account solo perché non vogliono gestire le credenziali. Il processo di autorizzazione sulla tua applicazione web o sito web può essere semplificato utilizzando servizi di terze parti come Google, Facebook, ecc. Questi servizi autorizzano gli utenti per loro conto e l'utente non ha bisogno di gestire le credenziali separatamente. In questo articolo, abbiamo implementato il protocollo google oauth per autorizzare gli utenti a utilizzare Node.js.

I migliori giochi da giocare con il tracciamento delle mani
Oculus Quest ha recentemente introdotto la grande idea del tracciamento manuale senza controller. Con un numero sempre crescente di giochi e attività ...
Come mostrare l'overlay OSD in app e giochi Linux a schermo intero
Giocare a giochi a schermo intero o utilizzare app in modalità a schermo intero senza distrazioni può tagliarti fuori dalle informazioni di sistema ri...
Le 5 migliori carte di acquisizione del gioco
Abbiamo tutti visto e amato i giochi in streaming su YouTube. PewDiePie, Jakesepticye e Markiplier sono solo alcuni dei migliori giocatori che hanno g...