Fluxo de OAuth 2.0 Password Grant
Oi, sou Vinicius Teixeira e estou começando minha carreira como programador.
Recentemente, me deparei com um tema desafiador na empresa onde trabalho: OAuth 2.0 Password Grant. Decidi dedicar uma semana para entender como esse fluxo funciona e como posso aplicá-lo em projetos futuros.
O OAuth 2.0 Password Grant é um fluxo de autenticação e autorização que permite ao aplicativo cliente (por exemplo, um aplicativo mobile) obter um token de acesso diretamente, utilizando as credenciais do usuário (como email e senha). Esse fluxo é simples e geralmente utilizado quando o cliente e o servidor pertencem ao mesmo domínio de confiança.
Atenção: Utilize Sempre HTTPS
Antes de entrar nos detalhes do OAuth 2.0 Password Grant, é crucial destacar que todas as comunicações entre cliente e servidor devem ser feitas usando o protocolo HTTPS. O HTTPS garante que os dados sensíveis, como email e senha, sejam transmitidos de forma segura, protegendo-os contra ataques de interceptação (como o man-in-the-middle).
Sem o HTTPS, as credenciais do usuário poderiam ser capturadas durante a transmissão, comprometendo completamente a segurança do sistema.
Entendendo o Fluxo no Aplicativo Mobile
1. Autenticação e Autorização
Passo 1: Credenciais
No aplicativo (cliente), o usuário preenche um formulário com seu email e sua senha:
- email:
[email protected]
- password:
minha-senha-secreta
Quando o usuário pressiona o botão de login, os dados são enviados para um endpoint, por exemplo:
POST https://www.tabnews.com.br/api/v1/sessions
Os dados normalmente são enviados como JSON, com o seguinte formato:
{
"email": "[email protected]",
"password": "minha-senha-secreta"
}
Passo 2: Validação das Credenciais
O backend recebe o email e a senha, verifica se são válidos e, caso estejam corretos, retorna uma resposta com:
- ID da sessão
- Token de acesso
- Data de expiração do token
Exemplo de resposta:
{
"id": "4825954c-679c-4304-9ca6-e69c5ad79f22",
"token": "YOUR_ACCESSTOKEN",
"expires_at": "2025-01-01T23:26:07.727Z",
"created_at": "2024-12-02T23:26:07.731Z",
"updated_at": "2024-12-02T23:26:07.731Z"
}
Agora que você recebeu o token de acesso, o que fazer com ele?
2. Armazenamento do Token no Dispositivo
Assim que o token é recebido, ele deve ser armazenado localmente de forma segura no cliente. Boas práticas incluem o uso de APIs específicas para armazenamento seguro:
- Keychain no iOS
- Secure Storage no Android
Mas por que é importante armazenar o token de forma segura? Porque o token é a chave que permite ao cliente acessar recursos protegidos. Se o token for comprometido, um atacante poderá usá-lo para realizar ações em nome do usuário.
3. Utilização do Token
Após o usuário ser autenticado, todas as próximas requisições que exigem autorização devem usar o token de acesso. Este token geralmente é enviado no cabeçalho das requisições HTTP, no formato:
Authorization: Bearer YOUR_ACCESSTOKEN
Fique à vontade para responder a este artigo!
Se tiverem alguma dúvida, sugestão ou crítica construtiva, não hesitem em compartilhar. Adoraria ouvir a opinião de vocês!