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-oauth2Exemplo: 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 oauth4webapiExemplo: 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 Também na biblioteca
node-schedule
Event Bus e padrão Observer em Kotlin: implementação e exemplos
Testes em C++: visão geral de frameworks e ferramentas (Google Test, Catch2, doctest)
Geolocalização e Mapas em C# (.NET): bibliotecas, exemplos e recomendações