Cliente OAuth para JavaScript (Node.js): visão geral e exemplos de uso

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Visão geral das bibliotecas de cliente OAuth para JavaScript (Node.js)



OAuth (Open Authorization) é um protocolo aberto de autorização que permite conceder a terceiros acesso limitado aos recursos do usuário sem compartilhar login e senha. No ecossistema Node.js, existem várias bibliotecas maduras que implementam OAuth 2.0 e OAuth 1.0a. Neste artigo, veremos as três soluções mais populares: simple-oauth2, oauth4webapi e Passport.js com suas estratégias. Você aprenderá como escolher a ferramenta adequada e como integrá-la ao seu projeto.



1. simple-oauth2 — cliente OAuth 2.0 universal



simple-oauth2 é uma biblioteca leve que fornece uma API limpa para trabalhar com OAuth 2.0. Ela suporta todos os principais grants (authorization code, client credentials, password, refresh token). É ideal para aplicações servidoras onde é necessário controle total sobre o processo.



Instalação

npm install simple-oauth2


Exemplo: autorização via GitHub

const express = require('express');const simpleOAuth2 = require('simple-oauth2');const app = express();

const config = { client: { id: 'SEU_CLIENT_ID', secret: 'SEU_CLIENT_SECRET' }, auth: { tokenHost: 'https://github.com', tokenPath: '/login/oauth/access_token', authorizePath: '/login/oauth/authorize' }};

const oauth2 = new simpleOAuth2.ClientCredentials(config);

// Rota para iniciar a autorizaçãoapp.get('/auth/github', (req, res) => { const authorizationUri = oauth2.authorizeURL({ redirect_uri: 'http://localhost:3000/callback', scope: 'user:email' }); res.redirect(authorizationUri);});

// Rota de callbackapp.get('/callback', async (req, res) => { const { code } = req.query; try { const result = await oauth2.getToken({ code, redirect_uri: 'http://localhost:3000/callback' }); const accessToken = oauth2.createToken(result); console.log('Access Token:', accessToken.token.access_token); res.send('Autorização bem-sucedida!'); } catch (error) { console.error('Erro ao obter token', error); res.status(500).send('Erro de autorização'); }});

app.listen(3000, () => console.log('Servidor rodando na porta 3000'));


2. oauth4webapi — padrão moderno



oauth4webapi é uma implementação das especificações mais recentes do OAuth 2.0 e OpenID Connect. A biblioteca não possui dependências externas, suporta PKCE (Proof Key for Code Exchange) e trabalho com JWK (JSON Web Keys). É recomendada para novos projetos onde segurança e conformidade com padrões são importantes.



Instalação

npm install oauth4webapi


Exemplo: autorização com PKCE

const express = require('express');const { AuthorizationServer, Client, generateCodeVerifier, generateCodeChallenge } = require('oauth4webapi');const app = express();

// Configuração do servidor de autorização (Google)const issuer = new URL('https://accounts.google.com');const server = new AuthorizationServer(issuer);const client = new Client({ client_id: 'SEU_CLIENT_ID', client_secret: 'SEU_CLIENT_SECRET', redirect_uris: ['http://localhost:3000/callback']});

app.get('/auth/google', async (req, res) => { const codeVerifier = generateCodeVerifier(); const codeChallenge = await generateCodeChallenge(codeVerifier); // Salva o codeVerifier na sessão req.session.codeVerifier = codeVerifier;

const authorizationUrl = new URL(server.authorization_endpoint); authorizationUrl.searchParams.set('client_id', client.client_id); authorizationUrl.searchParams.set('redirect_uri', client.redirect_uris[0]); authorizationUrl.searchParams.set('response_type', 'code'); authorizationUrl.searchParams.set('scope', 'openid profile email'); auth

Recommendations