O OAuth 2.0 oferece múltiplos modos de autorização, entre os quais o Authorization Code Grant é o mais comumente usado e seguro. code_challenge é um recurso aprimorado de segurança dentro desse modo, usado principalmente para o mecanismo PKCE (Proof Key for Code Exchange).
O que é PKCE?
PKCE (Proof Key for Code Exchange) é uma extensão projetada para aprimorar a segurança do padrão de código de autorização OAuth 2.0, especialmente quando usada em clientes públicos como aplicações JavaScript ou aplicativos móveis rodando em navegadores. O PKCE impede que códigos de autorização sejam interceptados e usados de forma inadequada ao adicionar uma etapa adicional de autenticação às solicitações de autorização.
code_challenge Papel
code_challenge faz parte do mecanismo PKCE, gerado e enviado durante a fase de solicitação de autorização. Ele é baseado em um valor secreto (chamado code_verifier), transformado por um algoritmo de hashing como o S256. O objetivo de code_challenge é fornecer uma base de validação para requisições subsequentes de token sem expor diretamente o code_verifier.
Geração e uso de code_challenge e code_verifier
Geração code_verifier: code_verifier é uma cadeia de alta entropia e gerada aleatoriamente,Comprimento do caractere (entre 43 e 128). O valor padrão é 43。
Geração code_challenge: Usando code_verifier, code_challenge é gerado por meio de um algoritmo de hash (como S256). Para S256, code_challenge é a codificação URL Base64 do valor hash code_verifier SHA-256, mas o caractere de preenchimento = da codificação deve ser removido, e o comprimento de saída deve ser de 43 caracteres (já que após a codificação de URL Base64, cada 4 caracteres representa 3 bytes, mas o último bloco de caracteres pode ter menos de 4 caracteres, então o comprimento pode variar ligeiramente após a remoção de caracteres = caracteres).
Use code_challenge em solicitações de autorização: Ao iniciar uma solicitação de autorização, code_challenge é enviada como um dos parâmetros de requisição para o servidor de autorização.
Uso code_verifier em requisições de token: Quando o servidor de autorização retorna o código de autorização, o cliente usa esse código junto com a code_verifier previamente gerada para solicitar acesso ao endpoint do token. O servidor de autorização verifica se o code_challenge e o code_verifier coincidem, garantindo que a solicitação seja iniciada pelo cliente original.
Geração PKCE
Ferramentas Online de Geração PKCE:O login do hiperlink está visível.
O código C# é gerado da seguinte forma:
Como mostrado abaixo:
Referência:
O login do hiperlink está visível.
O login do hiperlink está visível. |