AULA 41 MÓDULO 5 autenticação ⏱ 55 min

OAuth 2.0 e OpenID Connect

OAuth 2.0: autorização delegada. Fluxo Authorization Code. OIDC: ID Token. Login com Google via passport.js.

OAuth 2.0OIDCpassport.jsAuthorization CodescopeID Token

OAuth 2.0

OAuth 2.0 é um protocolo de autorização delegada. Permite que um aplicativo acesse recursos de outro em nome do usuário, sem que o usuário compartilhe sua senha.

🔑
"Login com Google"
Quando você clica em "Login com Google", o OAuth 2.0 está em ação. Você autoriza o app a acessar seu nome e email do Google. O app nunca vê sua senha do Google.
FLUXO AUTHORIZATION CODE (mais comum)
1
App redireciona usuário para Google com client_id e scope
2
Google autentica o usuário e pede permissão
3
Google redireciona de volta com authorization_code
4
App troca code por access_token (server-to-server)
5
App usa access_token para acessar APIs do Google

OpenID Connect (OIDC)

OAuth 2.0 é para autorização. OIDC é uma camada sobre OAuth 2.0 que adiciona autenticação: o ID Token (JWT) contém informações do usuário.

🏗️
na prática
Use uma biblioteca como passport.js, Auth0, ou Clerk. Implementar OAuth manualmente é complexo e propenso a falhas de segurança. Para apps novos, considere um auth provider gerenciado.
javascript
// OAuth com passport.js — Google Strategy
const passport = require('passport')
const { Strategy: GoogleStrategy } = require('passport-google-oauth20')

passport.use(new GoogleStrategy({
  clientID:     process.env.GOOGLE_CLIENT_ID,
  clientSecret: process.env.GOOGLE_CLIENT_SECRET,
  callbackURL:  '/auth/google/callback'
}, async (accessToken, refreshToken, profile, done) => {
  let user = await db.findByGoogleId(profile.id)
  if (!user) {
    user = await db.create({ googleId: profile.id, email: profile.emails[0].value })
  }
  done(null, user)
}))

// Rotas
app.get('/auth/google',
  passport.authenticate('google', { scope: ['email', 'profile'] }))

app.get('/auth/google/callback',
  passport.authenticate('google', { failureRedirect: '/login' }),
  (req, res) => { res.redirect('/dashboard') })
quiz · aula 41
Teste seus conhecimentos
0/3 respondidas
QUESTÃO 01
OAuth 2.0 resolve qual problema?
QUESTÃO 02
Qual é o papel do Authorization Code no fluxo OAuth?
QUESTÃO 03
OIDC adiciona o quê ao OAuth 2.0?
0/3