Grant Type Authorization Code no OAuth 2.0

O Grant Type Authorization Code e um dos grant types OAuth 2.0 mais comummente utilizados. Foi especificamente concebido para aplicacoes que podem manter confidencialmente o seu client secret, tornando-o ideal para aplicacoes do lado do servidor.

Grant Type Authorization Code no LoadFocus

Como Funciona o Authorization Code?

  1. Redirecionamento:
  • A aplicacao cliente redireciona o utilizador para o endpoint de autorizacao do servidor de autorizacao OAuth 2.0. Este redirecionamento tipicamente inclui parametros de consulta como o client_id, response_type (definido como "code"), redirect_uri (para onde o servidor de autorizacao enviara o utilizador apos conceder/negar permissao) e scope (que especifica o nivel de acesso que a aplicacao esta a solicitar).
  1. Autenticacao do Utilizador:
  • O utilizador faz login no servidor de autorizacao (se ainda nao tiver sessao iniciada) e revisa o pedido de acesso pela aplicacao cliente.
  1. Emissao do Codigo de Autorizacao:
  • Se o utilizador conceder permissao, e redirecionado de volta para a aplicacao cliente atraves do redirect_uri fornecido anteriormente. O redirecionamento tambem inclui um codigo de autorizacao no URL.
  1. Troca de Token:
  • A aplicacao cliente troca o codigo de autorizacao por um token de acesso fazendo um pedido POST ao endpoint de token do servidor de autorizacao. Este pedido contem o codigo de autorizacao, client_id, client_secret, redirect_uri e grant_type (definido como "authorization_code").
  1. Emissao do Token de Acesso:
  • Se o servidor de autorizacao verificar com sucesso o codigo fornecido e as credenciais do cliente, retorna um token de acesso (e opcionalmente, um refresh token) para a aplicacao cliente.
  1. Aceder ao Recurso Protegido:
  • A aplicacao cliente usa o token de acesso obtido para fazer pedidos ao servidor de recursos (API) em nome do utilizador.

Como Configurar o Authorization Code?

  1. Registar a Sua Aplicacao:
  • Antes de iniciar o fluxo OAuth, registe a sua aplicacao com o fornecedor OAuth 2.0. Apos registo bem-sucedido, recebera um client_id e client_secret.
  1. Configuracao do Redirect URI:
  • Ao registar a sua aplicacao, sera frequentemente solicitado a fornecer um redirect_uri. Este URI e para onde o servidor de autorizacao enviara os utilizadores apos concederem/negarem acesso. Garanta que este URI e preciso e seguro (tipicamente usando HTTPS).
  1. Implementar o Fluxo OAuth:
  • Use uma biblioteca ou SDK compativel com a linguagem e framework da sua aplicacao para simplificar este processo.
  • Inicie o fluxo redirecionando os utilizadores para o endpoint de autorizacao do servidor de autorizacao com os parametros de consulta necessarios.
  • Implemente um endpoint no seu servidor que corresponda ao redirect_uri que registou. Este endpoint tratara do codigo de autorizacao recebido.
  • Troque o codigo de autorizacao por um token de acesso fazendo um pedido POST ao endpoint de token.
  1. Proteger o Client Secret:
  • Nunca exponha o seu client_secret em codigo do lado do cliente. Use-o apenas do lado do servidor ao trocar o codigo de autorizacao por um token de acesso.
  1. Armazenamento de Token:
  • Uma vez que tenha um token de acesso, armazene-o de forma segura. Dependendo das necessidades da sua aplicacao, isto pode ser na memoria do servidor, numa base de dados ou num cookie seguro. Use sempre HTTPS para garantir comunicacao encriptada.
  1. Lidar com Expiracao de Token:
  • Os tokens de acesso sao frequentemente de curta duracao. Se tiver um refresh token, use-o para obter um novo token de acesso sem necessitar que o utilizador se re-autentique.

Consideracoes Finais sobre Authorization Code

O Grant Type Authorization Code e um metodo robusto e seguro para obter autorizacao do utilizador, especialmente para aplicacoes do lado do servidor. O passo adicional de trocar um codigo de autorizacao por um token de acesso garante que o acesso direto as credenciais do utilizador e evitado. Ao implementar, priorize sempre a seguranca, usando HTTPS e gerindo de forma segura client secrets e tokens.