Uma equipe de desenvolvimento está implementando um sistema de autenticação baseado em OAuth 2.0 e JWT para uma API RESTful. Durante os testes, o arquiteto de segurança propõe o uso do fluxo Authorization Code with PKCE para um aplicativo móvel público. Um desenvolvedor questiona: 'Por que não usar o fluxo Implicit? Ele é mais simples e já foi padrão para aplicativos móveis.' O arquiteto responde que o Implicit é desencorajado pelas boas práticas atuais. Considerando as especificações do OAuth 2.0 (RFC 6749) e as extensões de segurança (RFC 7636 e BCP para OAuth 2.0), analise as afirmativas a seguir:
I. O fluxo Implicit expõe o access token diretamente na URL de redirecionamento, o que pode permitir vazamento por meio do histórico do navegador, logs de proxy ou referenciador.
II. O PKCE (Proof Key for Code Exchange) foi projetado para mitigar ataques de interceptação do authorization code em clientes públicos, vinculando o código a um code verifier gerado pelo cliente.
III. No fluxo Authorization Code com PKCE, o code challenge é enviado na requisição de autorização e o code verifier é enviado na requisição de token, permitindo que o servidor de autorização valide a correspondência.
IV. O uso de JWT como formato de access token no OAuth 2.0 é obrigatório para que o PKCE funcione corretamente, pois o JWT permite a verificação de assinatura pelo cliente.
Está correto o que se afirma em:
Selecione uma alternativa pra criar sua conta e salvar o progresso.