Skip to main content

Práticas recomendadas para criar um aplicativo OAuth

Siga estas práticas recomendadas para aprimorar a segurança e o desempenho do OAuth app.

Nesse caso, use um GitHub App

Se possível, crie um GitHub App em vez de um OAuth app. Em geral, os GitHub Apps são mais indicados que os OAuth apps. Os GitHub Apps usam permissões refinadas, dão ao usuário mais controle sobre quais repositórios o aplicativo pode acessar e usam tokens de curta duração. Essas propriedades podem aprimorar a segurança do aplicativo, limitando o dano possível decorrente do vazamento das credenciais.

Assim como os OAuth apps, os GitHub Apps ainda podem usar o OAuth 2.0 e gerar um tipo de token OAuth (chamado de token de acesso do usuário) para realizar ações em nome de um usuário. No entanto, os GitHub Apps também podem agir independentemente de um usuário.

Para saber mais sobre GitHub Apps, confira "Sobre a criação de Aplicativos do GitHub".

Para saber mais sobre a migração de um OAuth app existente para um GitHub App, confira "Migrar aplicativos OAuth para aplicativos GitHub".

Usar escopos mínimos

O OAuth app só deve solicitar os escopos necessários para que o aplicativo execute a funcionalidade pretendida. Se algum token do aplicativo for comprometido, isso limitará a quantidade de danos ocorridos. Para obter mais informações, confira "Autorizar aplicativos OAuth".

Proteger as credenciais do aplicativo

Com um segredo do cliente, o aplicativo pode autorizar o usuário e gerar tokens de acesso do usuário. Os tokens podem ser usados para fazer solicitações de API em nome de um usuário.

Você precisa armazenar o segredo do cliente do aplicativo e todos os tokens gerados com segurança. O mecanismo de armazenamento depende da arquitetura de integrações e da plataforma em que ele é executado. Em geral, você deve usar um mecanismo de armazenamento destinado a armazenar dados confidenciais na plataforma que você está usando.

Segredos do cliente

Se o seu aplicativo for um site ou aplicativo Web, armazene o segredo do cliente em um cofre de chaves, como o Azure Key Vault ou como uma variável de ambiente criptografada ou um segredo em seu servidor.

Se o seu aplicativo for um cliente nativo, um aplicativo do lado do cliente ou for executado em um dispositivo de usuário (em vez de ser executado em seus servidores), você não poderá proteger o segredo do cliente. Tenha cuidado se você planeja acessar os serviços com base em tokens gerados pelo aplicativo, pois qualquer pessoa pode acessar o segredo do cliente para gerar um token.

Tokens de acesso do usuário

Se o seu aplicativo for um site ou aplicativo Web, você deverá criptografar os tokens no back-end e garantir que haja segurança em torno dos sistemas que podem acessar os tokens. Armazene os tokens de atualização em um local separado dos tokens de acesso ativos.

Se o seu aplicativo for um cliente nativo, um aplicativo do lado do cliente ou executado em um dispositivo de usuário (em vez de ser executado em seus servidores), talvez você não consiga proteger tokens, bem como um aplicativo executado em seus servidores. Você deve armazenar tokens por meio do mecanismo recomendado para a plataforma do aplicativo e ter em mente que o mecanismo de armazenamento pode não ser totalmente seguro.

Use o tipo de token apropriado

Os OAuth apps podem gerar tokens de acesso do usuário para fazer solicitações de API não autenticadas. O aplicativo nunca deve usar uma senha de personal access token ou GitHub para autenticação.

Criar um plano para lidar com violações de segurança

Você deve ter um plano em vigor para que possa lidar com quaisquer violações de segurança em tempo hábil.

Caso o segredo do cliente do aplicativo seja comprometido, você precisará gerar um novo segredo, atualizar o aplicativo para usá-lo e excluir o segredo antigo.

Caso esses tokens de acesso do usuário sejam comprometidos, você deverá revogá-los imediatamente. Para obter mais informações, confira "Pontos de extremidade da API REST para autorizações de OAuth".

Verifique o acesso de um usuário às suas organizações

Seu aplicativo OAuth pode ser acessado por usuários fora de sua organização ou empresa. Se você pretende que um aplicativo seja usado apenas por membros de sua organização ou empresa, verifique o status de associação do usuário quando ele entrar em seu aplicativo.

Para localizar a lista de organizações das quais um usuário é membro, você pode usar o ponto de extremidade "Listar organizações para o usuário autenticado". Em seguida, você pode validar essa lista em relação a uma lista de organizações aprovadas para seu aplicativo. Para obter mais informações, confira "Pontos de extremidade de API REST para organizações".

Observação: mesmo um OAuth app criado por um conta de usuário gerenciada ou organização com usuários gerenciados pode ser acessado por usuários fora da empresa.

Realizar verificações de vulnerabilidade regulares

Você deve realizar verificações regulares de vulnerabilidade do aplicativo. Por exemplo, você pode configurar a verificação de código e a verificação de segredo no repositório que hospeda o código do aplicativo. Para obter mais informações, confira "Sobre a varredura de código" e "Sobre a verificação de segredo."

Escolher um ambiente apropriado

Se o aplicativo for executado em um servidor, verifique se o ambiente do servidor é seguro e se ele pode lidar com o volume de tráfego esperado para seu aplicativo.

Usar serviços de maneira segura

Se o aplicativo usar serviços de terceiros, isso deverá ocorrer de maneira segura:

  • todos os serviços usados pelo aplicativo devem ter um logon exclusivo e uma senha.
  • Os aplicativos não devem compartilhar contas de serviço como, por exemplo, e-mail ou serviços de banco de dados para gerenciar seu serviço de SaaS.
  • Somente os funcionários com funções administrativas devem ter acesso de administrador à infraestrutura que hospeda o aplicativo.

Adicionar log e monitoramento

Considere adicionar funcionalidades de log e monitoramento no aplicativo. Um log de segurança pode incluir:

  • Eventos de autenticação e autorização
  • Alterações na configuração do serviço
  • Leitura e gravação de objetos
  • Alterações de permissão de usuário e grupo
  • Elevação do papel para administrador

Os logs devem usar carimbos de data/hora consistentes para cada evento e registrar usuários, endereços IP ou nomes de host de todos os eventos registrados.

Habilitar a exclusão de dados

Se o aplicativo estiver disponível para outros usuários, ofereça aos usuários uma forma de excluir os dados. Os usuários não devem precisar enviar um email ou chamar uma pessoa de suporte para excluir os dados.

Leitura adicional