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:
- 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.
- 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.
- 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,SecureeSameSiteprotegem contra XSS roubar o token, algo quelocalStoragenã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:
- Adote OIDC para login e SSO, apoiando-se em um provedor de identidade maduro em vez de reinventar o fluxo.
- Use Authorization Code + PKCE como fluxo padrão e aposente Implicit e Password.
- Ofereça passkeys como opção primária de login, mantendo senha + MFA como fallback durante a transição.
- Ative MFA adaptativo para equilibrar segurança e fricção.
- Endureça a camada de sessão: tokens curtos, refresh com rotação, cookies
HttpOnlye 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.