Quando você clica em entrar com Google em um site, normalmente está usando OAuth. A ideia é que o novo app não precise saber sua senha: quem verifica sua identidade é o serviço que você já usa. Entender o fluxo ajuda tanto quem usa quanto quem desenvolve.
Os papéis do fluxo
Existem quatro participantes:
- O usuário, dono da conta e dos dados.
- O aplicativo, que quer acessar algumas informações.
- O servidor de autorização, que é o serviço onde a conta existe, como o Google, e que cuida do login e da aprovação.
- O servidor de recursos, que guarda os dados protegidos e responde ao app quando ele apresenta um token válido.
Como o fluxo acontece
Uma versão simplificada de um fluxo comum:
- O usuário clica em entrar com Google no app.
- O app redireciona para a tela do Google, informando quais permissões quer, os escopos.
- O usuário faz login no Google, se precisar, e aprova ou nega.
- O Google redireciona de volta para o app com um código temporário.
- O servidor do app troca esse código por um token de acesso, conversando diretamente com o Google.
- O app usa o token para acessar apenas o que foi permitido, durante o tempo de validade do token.
A senha do usuário nunca passa pelo app. Se o usuário quiser revogar o acesso, faz isso nas configurações da conta, no serviço de origem.
Tokens e escopos
- Token de acesso: uma credencial de curta duração que o app apresenta nas chamadas.
- Token de atualização: em alguns fluxos, serve para obter um novo token de acesso sem pedir login de novo. Exige proteção redobrada.
- Escopos: delimitam o que o token permite. Pedir só o necessário reduz o risco e passa mais confiança ao usuário.
Para entender como esses acessos conversam com os sistemas, vale rever o que é API e para que serve.
Boas práticas para quem implementa
- Use bibliotecas e SDKs oficiais ou bem mantidos, em vez de escrever o fluxo do zero.
- Cadastre apenas endereços de redirecionamento que você controla e confira o parâmetro de estado para evitar requisições forjadas.
- Mantenha segredos do cliente apenas no servidor, fora do código-fonte e fora de repositórios públicos.
- Peça o mínimo de escopos e explique ao usuário por que precisa deles.
- Trate expiração e revogação de tokens, para não manter acesso quando o usuário retirar a permissão.
- Registre eventos importantes de login, sem guardar dados sensíveis nos logs.
Para decisões de arquitetura e outras formas de entrada, como senha própria e chaves de acesso, o artigo login em apps: como fazer com segurança traz um comparativo.
Cuidados para quem usa
Antes de aprovar, leia quais permissões o app pede. Se um jogo simples quer acessar seus contatos ou arquivos, desconfie. De tempos em tempos, revise os apps que têm acesso à sua conta e remova os que você não usa mais. Isso reduz a chance de abuso caso um desses serviços sofra algum problema.