Práticas recomendadas

Esta página aborda algumas práticas recomendadas gerais para integração com o OAuth 2.0. Considere essas práticas recomendadas, além de orientações específicas para seu tipo de aplicativo e plataforma de desenvolvimento. Consulte também as dicas para preparar seu app para produção e as políticas do OAuth 2.0 do Google.

Processar credenciais de cliente com segurança

As credenciais do cliente OAuth identificam a identidade do seu app e precisam ser tratadas com cuidado. Armazene essas credenciais apenas em um armazenamento seguro, por exemplo, usando um gerenciador de secrets como o Google Cloud Secret Manager. Não codifique as credenciais, faça commit delas em um repositório de código nem as publique.

Processar tokens de usuário com segurança

Os tokens de usuário incluem tokens de atualização e de acesso usados pelo aplicativo. Armazene tokens de forma segura em repouso e nunca os transmita em texto simples. Use um sistema de armazenamento seguro adequado para sua plataforma, como Keystore no Android, Keychain Services no iOS e macOS ou Credential Locker no Windows.

Revogue os tokens assim que eles não forem mais necessários e exclua-os permanentemente dos seus sistemas.

Além disso, considere estas práticas recomendadas para sua plataforma:

  • Para aplicativos do lado do servidor que armazenam tokens de muitos usuários, criptografe-os em repouso e garanta que o repositório de dados não esteja acessível publicamente à Internet.
  • Para apps nativos de computador, é altamente recomendável usar o protocolo de chave de prova para troca de código (PKCE) para receber códigos de autorização que podem ser trocados por tokens de acesso.

Processar a revogação e a expiração do token de atualização

Se o app tiver solicitado um token de atualização para acesso off-line, você também precisará processar a invalidação ou expiração dele. Os tokens podem ser invalidados por diferentes motivos, por exemplo, eles podem ter expirado ou o acesso dos seus apps pode ter sido revogado pelo usuário ou por um processo automatizado. Nesse caso, considere cuidadosamente como o aplicativo deve responder, incluindo solicitar ao usuário no próximo login ou limpar os dados dele. Para receber notificações sobre revogação de token, faça a integração com o serviço Proteção entre contas.

Usar autorização incremental

Use a autorização incremental para solicitar os escopos do OAuth adequados quando a funcionalidade for necessária para seu aplicativo.

Não solicite acesso a dados quando o usuário se autenticar pela primeira vez, a menos que seja essencial para a funcionalidade principal do app. Em vez disso, solicite apenas os escopos específicos necessários para uma tarefa, seguindo o princípio de selecionar os escopos menores e mais limitados possíveis.

Sempre solicite escopos de acordo com o contexto para ajudar os usuários a entender por que o app está pedindo acesso e como os dados serão usados.

Por exemplo, seu aplicativo pode seguir este modelo:

  1. O usuário se autentica com seu app
    1. Nenhum escopo adicional é solicitado. O app oferece funcionalidades básicas para que o usuário explore e use recursos que não exigem dados ou acesso adicionais.
  2. O usuário seleciona um recurso que exige acesso a dados adicionais
    1. Seu aplicativo faz uma solicitação de autorização para esse escopo específico do OAuth necessário para esse recurso. Se esse recurso exigir vários escopos, siga as práticas recomendadas abaixo.
    2. Se o usuário negar a solicitação, o app vai desativar o recurso e dar a ele mais contexto para solicitar acesso novamente.

Processar o consentimento para vários escopos

Ao solicitar vários escopos de uma vez, os usuários podem não conceder todos os escopos do OAuth que você solicitou. O app precisa processar a negação de escopos desativando a funcionalidade relevante.

Se a funcionalidade básica do app exigir vários escopos, explique isso ao usuário antes de pedir consentimento.

Você só pode pedir novamente quando o usuário indicar claramente a intenção de usar o recurso específico que exige o escopo. Seu app precisa fornecer ao usuário contexto e justificativa relevantes antes de solicitar escopos do OAuth.

É preciso minimizar o número de escopos que o app solicita de uma só vez. Em vez disso, use a autorização incremental para solicitar escopos no contexto de recursos e funcionalidades.

Usar navegadores seguros

Na Web, as solicitações de autorização do OAuth 2.0 só podem ser feitas em navegadores da Web completos. Em outras plataformas, selecione o tipo de cliente OAuth correto e integre o OAuth conforme apropriado para sua plataforma. Não redirecione a solicitação por ambientes de navegação incorporados, incluindo webviews em plataformas móveis, como WebView no Android ou WKWebView no iOS. Em vez disso, use bibliotecas OAuth nativas ou o Login do Google para sua plataforma.

Criação e configuração manual de clientes OAuth

Para evitar abusos, não é possível criar ou modificar clientes OAuth de maneira programática. Você precisa usar o Google Developers Console para reconhecer explicitamente os Termos de Serviço, configurar seu cliente OAuth e se preparar para a verificação do OAuth.

Para fluxos de trabalho automatizados, considere usar contas de serviço.

Remover clientes OAuth não usados

Audite regularmente seus clientes OAuth 2.0 e exclua proativamente aqueles que não são mais necessários para seu aplicativo ou que se tornaram obsoletos. Deixar clientes não usados configurados representa um risco de segurança em potencial, já que o cliente pode ser usado indevidamente se as credenciais forem comprometidas.

Para reduzir ainda mais os riscos de clientes não utilizados, os clientes OAuth 2.0 inativos por seis meses são excluídos automaticamente.

A prática recomendada é não esperar a exclusão automática, mas remover proativamente clientes não utilizados. Essa prática minimiza a superfície de ataque do aplicativo e garante uma boa higiene de segurança.