Come autorizzare gli utenti utilizzando Google Oauth in Node.js

Come autorizzare gli utenti utilizzando Google Oauth in Node.js

L'autorizzazione aperta, nota anche come OAuth, è un protocollo utilizzato per autorizzare un utente sul tuo sito Web utilizzando un servizio di terze parti come Google, GitHub, Facebook, ecc. Il servizio di terze parti condivide alcuni dati (nome, e-mail, 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 salvare gli utenti molti problemi extra.

Come funziona Oauth

Quando un utente fa clic su "Accedi con Google", porta l'utente alla pagina di consenso di Google Oauth. 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 gestire separatamente le credenziali per il tuo sito Web.

Implementazione di Google OAuth usando il nodo.js

Quasi tutti i linguaggi di programmazione forniscono biblioteche diverse per implementare Google Oauth per autorizzare gli utenti. Nodo.JS fornisce biblioteche "passaporto" e "passaporto-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 di sviluppatore 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 il seguente link e crea il tuo progetto:

    https: // console.sviluppatori.Google.com

.

Configurazione di Google Project

Dopo aver creato il progetto, vai nel progetto e seleziona "Schermata di consenso di Oauth" dal menu lato sinistro.

Fai clic sul pulsante "Crea" e fornisci tutti i dettagli del 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. È necessario 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 lo desideri. Gli utenti di prova sono gli unici utenti consentiti che possono accedere alla tua applicazione Web in modalità test. Per ora, non inseriremo alcun utente di test e faremo clic su "Salva e continuiamo" per passare alla pagina di riepilogo del progetto.

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

Dal menu a discesa, selezionare "ID client OAuth" e specificare il tipo di applicazione come "Applicazione Web" e il nome dell'applicazione.

Nella stessa pagina, dobbiamo fornire due URI, le "Origini Javascript autorizzate" e "URI RIDERATO AUTORIZZATI". Il "Origins JavaScript autorizzato" è l'origine HTTP della tua applicazione Web e non può avere alcun percorso. L'URI di reindirizzamento autorizzato "è 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 credenziali OAuth.

Nodo iniziale.Progetto JS

Finora abbiamo creato un progetto Google per autorizzare gli utenti per la nostra applicazione utilizzando Google. Ora inizieremo il nodo.Progetto JS per implementare OAuth. Crea una directory denominata "auth" e avvia il progetto Express.

ubuntu@ubuntu: ~ $ mkdir auth
ubuntu@ubuntu: ~ $ cd auth
ubuntu@ubuntu: ~ $ npm init -y

Installazione di pacchetti NPM richiesti

Per implementare Google Oauth utilizzando il nodo.JS, dobbiamo installare alcuni pacchetti NPM. Useremo "Passport", "Express", "Path" e "Passport-Google-oauth20". Installa questi pacchetti utilizzando NPM.

ubuntu@ubuntu: ~ $ npm Installa Express Passport Passport-Google-Oauth20 Path

Nodo di scrittura.codice js

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



Oauth


Autorizza qui

Ora crea un file pubblico/successo.html 'con i seguenti contenuti.



Oauth


Autorizzato



Dopo aver creato pagine Web, ora scriveremo il codice per autorizzare gli utenti a utilizzare Google Oauth. Crea un indice '.js '.

// Importazione dei pacchetti richiesti
const espress = requisito ('express');
cost passaporto = requisito ('passaporto');
const path = requisite ('percorso');
const googLestrategy = requisito ('Passport-Google-oauth20').Strategia;
const app = express ();
// Definizione dei parametri
// ID client è il parametro che otterremo dalla console di sviluppatore di Google
Client_id = "xxxxxxx";
// Il segreto del cliente sarà anche preso dalla console di sviluppatore di Google
Client_secret = "xxxxx";
// L'utente verrà reindirizzato a callback_url dopo l'autorizzazione
Callback_url = "http: // localhost: 8000/autorizzato";
// Il numero di porta deve essere lo stesso definito nella console sviluppatore
Porta = 8000;
// Configurazione del middleware del passaporto
app.Usa (passaporto.inizializzare());
app.Usa (passaporto.sessione());
passaporto.serializeuser (function (id, done)
fatto (null, id);
);
passaporto.deserializeUser (function (id, done)
fatto (null, id);
);
// Il seguente middleware eseguirà ogni volta che il passaporto. Il metodo di autenticazione viene chiamato e restituisce parametri diversi definiti nell'ambito.
passaporto.Usa (new GoogLestrategy (
ClientID: client_id,
ClientSecret: client_secret,
callbackurl: callback_url
,
Funzione asincrima (AccessToken, RefreshToken, Profile, Email, CB)
Restituisci CB (null, e -mail.id);

));
// Servire la home page per l'applicazione
app.get ('/', (req, res) =>

res.Sendfile (percorso.Join (__ Dirname + '/Public/Index.html '));
);
// Servire la pagina di successo per l'applicazione
app.get ('/success', (req, res) =>

res.Sendfile (percorso.join (__ Dirname + '/Public/Success.html '));
);
// L'utente verrà reindirizzato alla pagina di Google Auth ogni volta che colpisce il percorso "/Google/Auth".
app.get ('/Google/Auth',
passaporto.autentica
);
// Il reindirizzamento del fallimento dell'autenticazione è definito nel percorso seguente
app.get ('/autorizzato',
passaporto.autenticate ('google', failureredirect: '/'),
(req, res) =>

res.reinirect ('/successo');

);
// Server in esecuzione
app.Ascolta (porta, () =>

console.registro ("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.

ubuntu@ubuntu: ~ $ nodo indice.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 "Authorize Here", reindirizzerà alla pagina di Google Oauth.

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

Conclusione

Gestire nomi utente e password per diverse applicazioni Web non è un'attività 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 di Google OAuth per autorizzare gli utenti a utilizzare il nodo.js.