Como usar um GitHub App em vez de um OAuth app
Em geral, os GitHub Apps são mais indicados que os OAuth apps.
O OAuth apps e o GitHub Apps usam o OAuth 2.0.
OAuth apps só podem agir em nome de um usuário, enquanto GitHub Apps podem agir em nome de um usuário ou independentemente.
Para saber mais, confira Diferenças entre os aplicativos GitHub e os aplicativos OAuth.
Para obter informações sobre como migrar um OAuth app existente para um GitHub App, confira Migrar aplicativos OAuth para aplicativos GitHub.
GitHub Apps oferecem segurança aprimorada
Os GitHub Apps fornecem mais controle sobre o que o aplicativo pode fazer. Em vez dos escopos amplos usados pelos OAuth apps, os GitHub Apps usam permissões refinadas. Por exemplo, se o seu aplicativo precisar ler o conteúdo de um repositório, um OAuth app exigirá o escopo repo
, o que também permitirá ao aplicativo editar o conteúdo e as configurações do repositório. Um GitHub App pode solicitar o acesso somente leitura ao conteúdo do repositório, o que não permitirá que o aplicativo execute ações mais privilegiadas, como editar o conteúdo ou as configurações do repositório.
Os GitHub Apps também oferecem mais controle sobre o acesso ao repositório. Com um GitHub App, o usuário ou o proprietário da organização que instalou o aplicativo pode decidir quais repositórios o aplicativo pode acessar. Por outro lado, um OAuth app pode acessar todos os repositórios que o usuário que autorizou o aplicativo pode acessar.
Os GitHub Apps usam tokens de curta duração. Se o token for vazado, ele será válido por um período menor, o que reduz os danos que podem ser causados. Por outro lado, os tokens do OAuth app só expiram quando a pessoa que autorizou o OAuth app revoga o token.
Esses recursos de segurança ajudam a fortalecer a segurança do seu GitHub App, limitando o dano que poderia ser causado se as credenciais do seu aplicativo vazassem. Além disso, isso permite que as organizações com políticas de segurança mais rigorosas usem seu aplicativo.
Os GitHub Apps podem agir de maneira independente de um usuário ou em nome dele
Os GitHub Apps podem agir de maneira independente de um usuário. Isso é útil para automações que não exigem a entrada de usuário.
Assim como os OAuth apps, os GitHub Apps ainda podem executar ações em nome de um usuário. Ao contrário dos OAuth apps, que não indicam que a ação foi executada pelo aplicativo, os GitHub Apps indicam que a ação foi executada pelo aplicativo em nome do usuário.
Os GitHub Apps não estão vinculados a uma conta de usuário e não consomem uma estação no GitHub. Os GitHub Apps permanecem instalados mesmo quando a pessoa que inicialmente instalou o aplicativo deixa a organização. Isso permite que suas integrações continuem funcionando mesmo que as pessoas saiam da sua equipe.
Os GitHub Apps têm limites de taxa escalonáveis
O limite de taxa dos GitHub Apps que usam um token de acesso de instalação é escalado com o número de repositórios e o número de usuários da organização. Por outro lado, os OAuth apps têm limites de taxa mais baixos e não são escalados. Para saber mais, confira Limites de taxa para aplicativos GitHub.
Os GitHub Apps têm webhooks internos
Os GitHub Apps têm webhooks internos e centralizados. Os GitHub Apps podem receber eventos de webhook relativos a todos os repositórios e organizações que o aplicativo pode acessar. Por outro lado, os OAuth apps precisam configurar webhooks individualmente para cada repositório e organização.
O acesso à API é um pouco diferente
Em geral, os GitHub Apps e os OAuth apps podem fazer as mesmas solicitações de API. No entanto, há algumas diferenças:
- A API REST usada para gerenciar as execuções de verificação e os pacotes de verificação só está disponível para os GitHub Apps.
- Recursos de nível empresarial, como o próprio objeto corporativo, não estão disponíveis para GitHub Apps. Isso significa que GitHub Apps não podem chamar pontos de extremidade como
GET /enterprise/settings/license
. No entanto, recursos empresariais de organização e repositório estão disponíveis. - Algumas solicitações podem retornar dados incompletos dependendo das permissões e do acesso ao repositório que foi permitido a um GitHub App. Por exemplo, se o aplicativo fizer uma solicitação para obter todos os repositórios aos quais um usuário pode acessar, a resposta incluirá apenas os repositórios aos quais o aplicativo também recebeu acesso.
Para obter mais informações sobre os pontos de extremidade da API REST disponíveis para os GitHub Apps, confira Pontos de extremidade disponíveis para tokens de acesso de instalação do aplicativo GitHub.
Como escolher entre um GitHub App ou um personal access token
Caso você deseje acessar os recursos do GitHub em nome de um usuário ou em uma organização, ou se você prevê uma integração de longa duração, recomendamos criar um GitHub App.
Use personal access tokens para testes de API ou scripts de curta duração. Como um personal access token está associado a um usuário, sua automação pode ser interrompida se o usuário não tiver mais acesso aos recursos de que você precisa. Um GitHub App instalado em uma organização não depende de um usuário. Além disso, ao contrário de um usuário, um GitHub App não consome um estação GitHub.
O GitHub dá suporte a dois tipos de personal access tokens, mas recomenda que você use fine-grained personal access tokens em vez de personal access tokens (classic) sempre que possível. Para obter mais informações sobre os personal access tokens, confira Gerenciar seus tokens de acesso pessoal.
Como escolher entre um GitHub App ou um GitHub Actions
Os GitHub Apps e o GitHub Actions fornecem maneiras de criar ferramentas de automação e fluxo de trabalho.
O GitHub Actions fornece automação que pode executar trabalhos como integração contínua, tarefas de implantação e gerenciamento de projetos em um repositório. Eles são executados diretamente em computadores do executor hospedado no GitHub ou em executores auto-hospedados configurados pelo administrador. O GitHub Actions não é executado de maneira persistente. Os fluxos de trabalho dele são executados em resposta a eventos que ocorrem no repositório e só têm acesso aos recursos do repositório para os quais estão configurados. No entanto, as ações personalizadas podem ser compartilhadas entre repositórios e organizações, permitindo que os desenvolvedores reutilizem e modifiquem as ações existentes de acordo com as necessidades. O GitHub Actions também é fornecido com um gerenciamento de segredos interno, que você pode usar para interagir com segurança com serviços de terceiros e gerenciar chaves de implantação com segurança.
GitHub Apps executados de forma persistente em um servidor ou infraestrutura de computação que você fornece ou executa em um dispositivo de usuário. Eles podem reagir a eventos de webhook de GitHub, bem como eventos de fora do ecossistema de GitHub. Elas são uma boa opção para operações que abrangem vários repositórios ou organizações ou para fornecer serviços hospedados a outras organizações. Um GitHub App é a melhor opção ao criar uma ferramenta com funções que ocorrem principalmente fora do GitHub ou que exigem mais tempo ou permissões do que um fluxo de trabalho GitHub Actions alocado.
Para obter mais informações sobre como comparar o GitHub Actions com o GitHub Apps, confira Sobre ações personalizadas.
É possível usar um GitHub App para autenticar em um fluxo de trabalho GitHub Actions se o GITHUB_TOKEN
integrado não tiver permissões suficientes. Para saber mais, confira Fazer solicitações de API autenticadas com um Aplicativo do GitHub em um fluxo de trabalho do GitHub Actions.