O que é um pedido de autorização (authorization request)?
Dependendo do contexto, o termo “pedido de autorização (authorization request)” pode referir-se a diferentes coisas. Neste artigo, vamos focar-nos na definição na especificação OAuth 2.0 .
No OAuth 2.0, existem vários tipos de concessão (fluxos) que definem como um Cliente pode obter autorização de um utilizador para aceder a recursos protegidos.
![Nota] “Pedidos de autorização (authorization requests)” são frequentemente confundidos com “pedidos de autenticação (authentication requests)” no contexto do OpenID Connect (OIDC) . Veja Pedido de autenticação (Authentication request) para detalhes específicos do OIDC.
Como funciona um pedido de autorização (authorization request)?
Quando um cliente (aplicação) quer aceder a recursos protegidos em nome de um utilizador, inicia um pedido de autorização (authorization request) para o Servidor de autorização . O cliente deve indicar o tipo de concessão solicitado juntamente com os parâmetros necessários no pedido.
Aqui estão alguns tipos de concessão (fluxos) típicos para autorização de utilizadores finais no OAuth 2.0:
- Fluxo de código de autorização (Authorization code flow) : O fluxo mais recomendado para autorização de utilizadores finais. É geralmente usado com Prova de Chave para Troca de Código (PKCE) para melhor segurança e é adequado para a maioria das aplicações.
- Fluxo implícito (Implicit flow) : Um fluxo simplificado que está obsoleto no OAuth 2.1 devido a preocupações de segurança.
- Concessão de credenciais de senha do proprietário do recurso (ROPC) : Um tipo de concessão (fluxo) onde as credenciais do utilizador são trocadas diretamente por um access token. Este fluxo não é recomendado devido a riscos de segurança.
Existem também outras extensões, como o Fluxo de dispositivo (Device flow) para dispositivos com capacidades de entrada limitadas. Cada fluxo tem as suas próprias características e casos de uso. Para a maioria das aplicações web, o fluxo de código de autorização é a escolha recomendada.
A autorização Comunicação máquina a máquina é tipicamente feita usando o Fluxo de credenciais do cliente (Client credentials flow) , que não envolve interação do utilizador.
Por exemplo, um cliente (aplicação) pode solicitar autorização para aceder aos ficheiros do Google Drive de um utilizador. Aqui está um diagrama de sequência simplificado do fluxo de código de autorização:
Uma vez obtido o Token de acesso (Access token) , o cliente pode usá-lo para aceder aos ficheiros do Google Drive do utilizador em nome do utilizador.
Parâmetros chave num pedido de autorização (authorization request)
O pedido de autorização OAuth 2.0 tipicamente inclui os seguintes parâmetros:
response_type
: O tipo de resposta que o cliente espera. Valores comuns sãocode
para o fluxo de código de autorização etoken
para o fluxo implícito.client_id
: O identificador do cliente emitido pelo servidor de autorização.redirect_uri
: O URI para onde o servidor de autorização envia o utilizador após o processo de autorização.scope
: Os escopos (permissões) solicitados para o access token.resource
: O parâmetro opcional que especifica o Indicador de recurso (Resource indicator) para os recursos solicitados. O servidor de autorização precisa suportar RFC 8707 para usar este parâmetro.
Os parâmetros acima não são exaustivos. Os parâmetros reais e os seus valores dependem do tipo de concessão e dos requisitos específicos da aplicação.