O que e um Grant Type?
Contexto de Autorizacao OAuth 2.0
No ambito do OAuth 2.0 Authorization, o termo "Grant Type" refere-se ao metodo atraves do qual uma aplicacao obtem um token de acesso. Essencialmente, o grant type especifica o tipo de fluxo de autorizacao que a aplicacao usara para aceder aos dados do utilizador.
Diferentes Grant Types no OAuth 2.0
O OAuth 2.0 define varios grant types, adaptados para cenarios de aplicacao distintos:
- Authorization Code:
- Melhor para: Aplicacoes que conseguem manter o segredo do cliente seguro, frequentemente aplicacoes do lado do servidor.
- Fluxo: O utilizador e primeiro redirecionado para um servidor de autenticacao. Apos autenticacao bem-sucedida, e redirecionado de volta para a aplicacao com um codigo de autorizacao. A aplicacao troca este codigo por um token de acesso.
- Implicit:
- Melhor para: Aplicacoes centradas no user-agent, como aplicacoes de pagina unica.
- Fluxo: Espelha o fluxo de Authorization Code, mas o token de acesso e entregue diretamente sem um codigo intermediario. E considerado menos seguro que o metodo Authorization Code.
- Password (Resource Owner Password Credentials):
- Melhor para: Aplicacoes altamente confiaveis, frequentemente pertencentes a mesma organizacao que o servidor de recursos.
- Fluxo: Os utilizadores introduzem diretamente o seu nome de utilizador e password na aplicacao. A aplicacao usa estas credenciais para obter um token de acesso. Este fluxo e geralmente desencorajado a menos que o cliente seja altamente confiavel.
- Client Credentials:
- Melhor para: Servicos ou aplicacoes que precisam de aceder aos seus proprios recursos, nao aos de um utilizador.
- Fluxo: A aplicacao autentica-se usando as suas proprias credenciais (como client ID e secret) e recebe um token de acesso em troca.
- Device Code (para dispositivos sem capacidades de navegador abrangentes):
- Melhor para: Dispositivos como smart TVs, consolas de jogos ou impressoras.
- Fluxo: O dispositivo comunica com o servidor de autorizacao para obter um device code e user code. O utilizador introduz o user code noutro dispositivo (por exemplo, um smartphone). Apos verificacao, o dispositivo recebe um token de acesso.
- Refresh Token:
- Uso: Nao e um fluxo independente mas complementa outros grant types. Quando o token de acesso expira, um refresh token permite que a aplicacao obtenha um novo sem que o utilizador tenha de fazer login novamente.
Porque sao os Grant Types Importantes?
Os grant types oferecem flexibilidade para diversos contextos de aplicacao. Cada um garante que a obtencao do token de acesso e o mais segura possivel, dadas as restricoes da aplicacao. A escolha do grant type afeta as interacoes entre o cliente, utilizador e servidor de autorizacao, tornando a sua selecao correta fundamental tanto para usabilidade como para seguranca.