PKCE

sigla

segurançacriptografia

Significa: Proof Key for Code Exchange

Uma extensão do OAuth que protege o fluxo de código de autorização.

Chave de Prova para Troca de Código (do inglês Proof Key for Code Exchange, RFC 7636) vincula um código de autorização ao cliente que o solicitou, usando um segredo de uso único. Impede que um código interceptado seja resgatado por um atacante e é hoje padrão para clientes OAuth públicos.

O PKCE fecha um buraco aberto por aplicativos móveis e aplicações de página única. O fluxo de código de autorização foi projetado supondo que o cliente conseguiria guardar um segredo, o que um servidor consegue e um aplicativo de celular ou um pacote de navegador não, já que qualquer um pode descompilar ou ver o código. Sem segredo, um atacante que intercepte o código de autorização pode resgatá-lo ele mesmo.

A correção é elegantemente simples. O cliente gera um verificador aleatório, envia apenas o hash dele ao iniciar o fluxo, e apresenta o verificador original ao trocar o código. O servidor de autorização confere se correspondem. Um código interceptado agora é inútil sem o verificador, que nunca saiu do cliente.

O que começou como contorno para dispositivos móveis virou a recomendação geral. A orientação atual aplica PKCE também a clientes confidenciais, porque custa quase nada e defende contra interceptação de código independentemente de existir um segredo. Se você está escolhendo um fluxo para algo interativo hoje, código de autorização com PKCE é a resposta, e o fluxo implícito que ele substituiu está obsoleto exatamente pelos motivos que o PKCE endereça.

Também conhecido como: pkce

Fontes

Todos os verbetes do glossário