Voltar ao blog
autenticaçãoOAuth2OIDCpasskeysWebAuthnMFAsegurança

Autenticação moderna: OAuth2, OIDC, passkeys e MFA sem fricção

2026-07-13
Autenticação moderna: OAuth2, OIDC, passkeys e MFA sem fricção

Autenticação é onde segurança e experiência do usuário se encontram e, com frequência, brigam. Aperte demais e o usuário desiste no login; solte demais e a conta vira porta de entrada para fraude. Durante anos, a resposta padrão foi "senha forte", e o resultado todo mundo conhece: senhas reutilizadas, vazamentos em massa e phishing convertendo com uma taxa deprimente. Em 2026, o cenário mudou. As ferramentas para autenticar com segurança e conveniência já existem, são maduras e são padrão de mercado. Este guia explica quais são e quando usar cada uma.

O problema fundamental da senha

A senha carrega um defeito de nascença: ela é um segredo compartilhado. O usuário conhece, o servidor precisa verificar, e portanto precisa guardar algo relacionado a ela. Isso cria uma cadeia inteira de riscos: vazamento do banco, reuso entre serviços, phishing, ataques de força bruta, engenharia social. Nenhuma política de "mínimo 12 caracteres com símbolo" resolve o fato de que o segredo pode ser roubado e reproduzido.

A autenticação moderna ataca a raiz do problema por dois caminhos complementares: delegar a identidade a provedores confiáveis (OAuth2/OIDC) e eliminar o segredo compartilhado com criptografia de chave pública (passkeys). Vamos por partes.

OAuth2 x OIDC: o mal-entendido mais comum

Quase todo mundo confunde os dois, então vale cravar a distinção:

  • OAuth2 é sobre autorização. Ele responde: "este aplicativo pode acessar tais recursos em nome do usuário?" É o protocolo que permite conceder a um app o direito de ler seu calendário, sem entregar sua senha. OAuth2 lida com tokens de acesso, não com identidade.
  • OIDC (OpenID Connect) é sobre autenticação. É uma camada em cima do OAuth2 que responde: "quem é este usuário?" Ele adiciona o ID Token, um JWT assinado que carrega os dados de identidade (o sub, e-mail, nome).

O erro clássico é usar o token de acesso do OAuth2 puro como prova de identidade, algo que ele nunca foi projetado para ser e que abre brechas reais. Se você quer login ("entrar com Google"), você quer OIDC. Se você quer acesso delegado a uma API de terceiro, aí sim OAuth2 é a peça.

Aspecto OAuth2 OIDC
Pergunta que responde O que este app pode fazer? Quem é este usuário?
Foco Autorização Autenticação
Token principal Access Token ID Token (JWT)
Caso de uso Acesso delegado a APIs Login / SSO
Identidade padronizada Não Sim (claims)

Escolhendo o fluxo certo do OAuth2

OAuth2 define vários "grant types", e escolher o errado é uma falha de segurança. Os que importam hoje:

  • Authorization Code + PKCE: o padrão para praticamente tudo (web apps, SPAs e aplicativos mobile). O PKCE (Proof Key for Code Exchange) protege a troca do código mesmo em clientes públicos que não conseguem guardar um segredo. Se você está começando, é este.
  • Client Credentials: para comunicação máquina-a-máquina, sem usuário envolvido, como um serviço chamando outro.
  • Device Code: para dispositivos com entrada limitada, como TVs e consoles, onde você autentica pelo celular.

Dois fluxos merecem um aviso: o Implicit e o Resource Owner Password estão obsoletos. O Implicit expunha tokens na URL; o Password pedia a senha diretamente ao app, matando toda a vantagem da delegação. Não use nenhum dos dois em projeto novo.

Passkeys: o fim da senha

Se OAuth2/OIDC resolvem delegação, as passkeys resolvem o problema na raiz: elas eliminam o segredo compartilhado. Construídas sobre os padrões WebAuthn e FIDO2, funcionam com criptografia de chave pública.

O mecanismo, sem jargão:

  1. No cadastro, o dispositivo do usuário gera um par de chaves. A chave privada nunca sai do dispositivo (guardada em hardware seguro, protegida por biometria ou PIN). A chave pública é enviada ao servidor.
  2. No login, o servidor manda um desafio aleatório. O dispositivo assina esse desafio com a chave privada, após o usuário confirmar com biometria.
  3. O servidor verifica a assinatura com a chave pública guardada. Sem senha, sem segredo trafegando.

As implicações de segurança são enormes:

  • Nada para vazar: o servidor só guarda chaves públicas, inúteis para um atacante.
  • Imune a phishing: a passkey é atrelada ao domínio real. Um site falso não consegue induzir a assinatura, porque o navegador verifica a origem.
  • Sem reuso: cada serviço tem seu próprio par de chaves.
  • Conveniência real: o usuário loga com o rosto ou a digital, sem digitar nem lembrar de nada.

As passkeys sincronizam pela nuvem do ecossistema (Apple, Google, Microsoft) ou por gerenciadores de senha, resolvendo o antigo medo de "perdi o dispositivo, perdi a conta". Em 2026, oferecer passkey deixou de ser diferencial e virou expectativa.

MFA sem destruir a experiência

Enquanto as passkeys não são universais, o MFA (autenticação multifator) continua essencial, mas nem todo segundo fator é igual, em segurança ou em fricção.

Fator Segurança Fricção Observação
SMS / OTP por SMS Baixa Média Vulnerável a SIM swap; use só como último recurso
App TOTP (autenticador) Boa Média Padrão sólido, offline, sem custo
Push notification Boa Baixa Cuidado com "MFA fatigue" (aprovações por cansaço)
Chave de segurança / Passkey Altíssima Baixa Resistente a phishing; o padrão-ouro

A chave para MFA sem fricção não é apenas o fator, é quando exigi-lo. O MFA adaptativo (risk-based) avalia o contexto (dispositivo conhecido, localização, horário, comportamento) e só pede o segundo fator quando o risco sobe. Login recorrente do mesmo notebook em casa flui direto; tentativa de outro país, num dispositivo novo, dispara o desafio. Segurança onde importa, atrito onde não.

Sessões e tokens: o depois do login

Autenticar é só o começo; manter a sessão segura é onde muitos sistemas falham. Alguns princípios que não podem faltar:

  • Access token curto, refresh token controlado: o token de acesso deve viver minutos, não dias. O refresh token, mais longevo, precisa de rotação: a cada uso, um novo é emitido e o anterior invalidado, permitindo detectar roubo.
  • Onde guardar no navegador: cookies HttpOnly, Secure e SameSite protegem contra XSS roubar o token, algo que localStorage não faz. Prefira cookies para tokens de sessão.
  • Revogação: é preciso conseguir invalidar uma sessão comprometida na hora: logout global, lista de revogação, ou tokens de vida curta que expiram sozinhos.
  • Validação do JWT: verifique assinatura, emissor (iss), audiência (aud) e expiração (exp) sempre. Um JWT não validado corretamente é um crachá que qualquer um pode falsificar.
// validando um ID Token (OIDC) no backend, com verificação de assinatura via JWKS
import { jwtVerify, createRemoteJWKSet } from 'jose';

const jwks = createRemoteJWKSet(new URL('https://idp.exemplo.com/.well-known/jwks.json'));

async function validarIdToken(token) {
  const { payload } = await jwtVerify(token, jwks, {
    issuer: 'https://idp.exemplo.com',   // iss esperado
    audience: 'meu-app-client-id',       // aud esperado
  });
  return payload; // sub, email, nome... identidade confiável
}

Por onde começar

Modernizar autenticação não precisa ser um big bang. Um caminho pragmático:

  1. Adote OIDC para login e SSO, apoiando-se em um provedor de identidade maduro em vez de reinventar o fluxo.
  2. Use Authorization Code + PKCE como fluxo padrão e aposente Implicit e Password.
  3. Ofereça passkeys como opção primária de login, mantendo senha + MFA como fallback durante a transição.
  4. Ative MFA adaptativo para equilibrar segurança e fricção.
  5. Endureça a camada de sessão: tokens curtos, refresh com rotação, cookies HttpOnly e revogação real.

Segurança e conveniência não são inimigas

Durante muito tempo, autenticação foi tratada como um imposto sobre a experiência: quanto mais segura, mais chata. As tecnologias de 2026 desfazem essa falsa escolha. OIDC dá login confiável e SSO; OAuth2 com PKCE protege o acesso delegado; passkeys eliminam o segredo que sempre foi o elo fraco; e MFA adaptativo coloca fricção só onde o risco justifica. Bem combinadas, essas peças entregam contas mais seguras e um login mais agradável ao mesmo tempo.

Na ConstructorTI, tratamos identidade e acesso como fundação de qualquer produto sério: arquiteturas OAuth2/OIDC corretas, adoção de passkeys, MFA adaptativo e gestão de sessão à prova de vazamento e phishing. Se a sua autenticação ainda depende só de senha, mistura autorização com identidade ou trava seus usuários em fluxos ultrapassados, fale com o nosso time de segurança e saia da conversa com um plano de autenticação moderna sob medida para o seu produto.