Skip to content

Plataforma Wittgenstein - Segurança e Autenticação

A segurança da plataforma Wittgenstein é baseada em OpenID Connect (OIDC) com PKCE (Proof Key for Code Exchange), operado via Keycloak.

O Papel do Keycloak e OIDC com PKCE

O OIDC construído sobre o OAuth 2.0 fornece não apenas autorização, mas também autenticação robusta. O fluxo com PKCE é fundamental para aplicações modernas, pois mitiga ataques de interceptação de código de autorização: 1. O cliente (front-end) gera um code_verifier aleatório e um code_challenge. 2. O code_challenge é enviado ao Keycloak junto com o pedido de login. 3. Após a autenticação, o Keycloak retorna um código de autorização. 4. O back-end (atuando como cliente confidencial) troca esse código pelo Access Token e Refresh Token, apresentando o code_verifier.

Backend como Confidential Client

Na plataforma Wittgenstein, o back-end atua como um Confidential Client. O front-end não lida diretamente com os tokens sensíveis após o fluxo de login. Em vez disso: - O back-end troca o código de autorização por tokens. - O Refresh Token é armazenado e devolvido ao front-end estritamente como um cookie HttpOnly. - Esse cookie HttpOnly não pode ser acessado via JavaScript, tornando a sessão imune a ataques de Cross-Site Scripting (XSS).

Expiração de Tokens e Mitigação de Roubo

A gestão do ciclo de vida dos tokens é uma camada adicional de segurança: - O Access Token possui um tempo de expiração curto (por exemplo, 5 a 15 minutos). - Se o Access Token for vazado ou roubado (já que pode residir em memória no front-end para chamadas à API), o tempo de utilidade para o atacante é severamente limitado. - O atacante não consegue refrescar o token porque o Refresh Token está isolado no cookie HttpOnly, o qual o navegador envia automaticamente de forma segura nas chamadas de atualização de sessão para o back-end, mas que permanece inacessível ao atacante.