Skip to main content
Publicamos atualizações frequentes em nossa documentação, e a tradução desta página ainda pode estar em andamento. Para obter as informações mais atualizadas, acesse a documentação em inglês.

Diferenças entre Aplicativos do GitHub e Aplicativos OAuth

Em geral, os GitHub App são mais indicados que os OAuth App porque usam permissões refinadas, dão mais controle sobre quais repositórios o aplicativo pode acessar e usam tokens de curta duração.

Sobre GitHub App e OAuth App

Em geral, os GitHub App são mais indicados que os OAuth App. Os GitHub App 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 dele.

Assim como os OAuth App, os GitHub App ainda podem gerar um tipo de token OAuth (chamado de token de acesso do usuário) e realizar ações em nome de um usuário. No entando, os GitHub App também podem agir independentemente de um usuário. Isso é benéfico para automações que não exigem entrada do usuário. O aplicativo continuará funcionando mesmo se a pessoa que o instalou em uma organização deixar essa organização.

Os GitHub App têm webhooks internos e centralizados. Os GitHub App podem receber eventos de webhook relativos a todos os repositórios e organizações que o aplicativo pode acessar. Por outro lado, os OAuth App devem configurar webhooks individualmente para cada repositório e organização.

O limite de taxa dos GitHub App que usam um token de acesso de instalação é escalonado de acordo com o número de repositórios e de usuários da organização. Por outro lado, os OAuth App têm limites de taxa mais baixos e não são escalonados.

Há um caso em que um OAuth App é indicado em vez de um GitHub App. Se o aplicativo precisar acessar recursos corporativos, use um OAuth App porque o GitHub App ainda não pode receber permissões com relação a uma empresa.

Para saber mais sobre GitHub App, confira "About creating GitHub Apps".

Para saber mais sobre a migração de um OAuth App existente para um GitHub App, confira "Migrating OAuth Apps to GitHub Apps".

Quem pode instalar aplicativos GitHub e autorizar aplicativos OAuth?

Você pode instalar os aplicativos GitHub em sua conta pessoal ou em organizações das quais você é proprietário. Se você tiver permissões de administrador em um repositório, você poderá instalar os aplicativos GitHub em contas de organização. Se um aplicativo GitHub for instalado em um repositório e exigir permissões de organização, o proprietário da organização deverá aprovar o aplicativo.

Por padrão, somente proprietários da organização podem gerenciar as configurações dos aplicativos GitHub em uma organização. Para permitir que usuários adicionais alterem as configurações de desenvolvedor dos aplicativos GitHub pertencentes à organização, um proprietário pode conceder a eles permissões de gerente do aplicativo GitHub. Os gerentes de aplicativos GitHub não podem gerenciar aplicativos de terceiros. Para saber como adicionar e remover gerentes de aplicativos GitHub em sua organização, confira "Gerentes de aplicativos GitHub".

Por outro lado, os usuários autorizam os Aplicativos OAuth, o que oferece ao aplicativo a capacidade de atuar como o usuário autenticado. Por exemplo, você pode autorizar um aplicativo OAuth que encontra todas as notificações para o usuário autenticado. Você sempre pode revogar as permissões de um aplicativo OAuth.

Aviso: a revogação de todas as permissões de um OAuth App exclui todas as chaves SSH que o aplicativo gerou em nome do usuário, incluindo as chaves de implantação.

Aplicativos GitHubAplicativos OAuth
Você deve ser proprietário de uma organização ou ter permissões de administrador em um repositório para instalar um aplicativo do GitHub em uma organização. Se um aplicativo GitHub for instalado em um repositório e exigir permissões de organização, o proprietário da organização deverá aprovar o aplicativo.Você pode autorizar um aplicativo OAuth para ter acesso a recursos.
Você pode instalar um aplicativo GitHub no seu repositório pessoal.Você pode autorizar um aplicativo OAuth para ter acesso a recursos.
Você deve ser um proprietário da organização, proprietário pessoal do repositório ou ter permissões de administrador em um repositório para desinstalar um aplicativo GitHub e remover seu acesso.Você pode excluir um token de acesso do OAuth para remover o acesso.
Você deve ser um proprietário de uma organização ou ter permissões de administrador em um repositório para solicitar a instalação de um aplicativo GitHub.Se uma política de aplicativos da organização estiver ativa, qualquer integrante da organização poderá solicitar a instalação de um aplicativo OAuth em uma organização. Um proprietário da organização deve aprovar ou negar a solicitação.

O que o aplicativo GitHub e o aplicativo OAuth podem acessar?

Os proprietários de contas podem usar um GitHub App em uma conta sem conceder acesso a outra. Por exemplo, você pode instalar um serviço de criação de terceiros na organização do seu empregador, mas decidir não conceder esse acesso de serviço de criação aos repositórios na sua conta pessoal. Um aplicativo GitHub permanece instalado se a pessoa que o configura sair da organização.

Um Aplicativo OAuth autorizado tem acesso a todos os recursos acessíveis do usuário ou do proprietário da organização.

Aplicativos GitHubAplicativos OAuth
A instalação de um aplicativo GitHub permite ao aplicativo acesso a repositórios escolhidos de uma conta de usuário ou da organização.A autorização de um aplicativo OAuth permite que o aplicativo acesso aos recursos acessíveis do usuário. Por exemplo, os repositórios que ele pode acessar.
O token de instalação de um aplicativo GitHub perde acesso aos recursos se um administrador remover repositórios da instalação.Um token de acesso do OAuth perde acesso aos recursos quando o usuário perde acesso, como quando perdem acesso de gravação em um repositório.
Os tokens de acesso de instalação são limitados aos repositórios especificados com as permissões escolhidas pelo criador do aplicativo.Um token de acesso OAuth é limitado por meio de escopos.
Os aplicativos GitHub podem solicitar acesso separado para problemas e pull requests sem acessar o conteúdo real do repositório.Os Aplicativos OAuth precisam solicitar o escopo repo para obter acesso a problemas, solicitações de pull ou a qualquer item pertencente ao repositório.
Os aplicativos GitHub não estão sujeitos às políticas de aplicativo da organização. Um aplicativo GitHub só tem acesso aos repositórios que algum proprietário da organização concedeu.Se uma política de aplicativo da organização estiver ativa, somente um proprietário da organização poderá autorizar a instalação de um aplicativo OAuth. Se instalado, o aplicativo OAuth obterá acesso a qualquer coisa visível para o token que o proprietário da organização tem dentro da organização aprovada.
Um aplicativo GitHub recebe um evento do webhook quando uma instalação é alterada ou removida. Isto informa ao criador do aplicativo quando receberam mais ou menos acesso aos recursos de uma organização.Os aplicativos OAuth podem perder acesso a uma organização ou repositório a qualquer momento com na alteração de acesso do usuário concedido. O aplicativo OAuth não irá informá-lo quando perde acesso a um recurso.

Identificação baseada em token

Observação: os Aplicativos do GitHub também podem usar um token baseado no usuário. Para obter mais informações, confira "Autenticação com um aplicativo GitHub em nome de um usuário".

Aplicativos GitHubAplicativos OAuth
Um aplicativo GitHub pode solicitar um token de acesso de instalação usando uma chave privada com um formato de token do JSON fora da banda.Um aplicativo OAuth pode trocar um token de solicitação por um token de acesso após um redirecionamento por meio de uma solicitação da web.
Um token de instalação identifica o aplicativo como o bot dos Aplicativos do GitHub, como @jenkins-bot.Um token de acesso identifica o aplicativo como o usuário que concedeu o token ao aplicativo, como @octocat.
Os tokens de acesso de instalação expiram após um tempo predefinido (atualmente, uma hora).Os tokens do OAuth permanecem ativos até que sejam cancelados pelo cliente.
Os GitHub Apps instalados em organizações ou repositórios estão sujeitos a limites de taxa que escalam de acordo com o número de instalações. Para obter mais informações, confira "Limites de taxa para aplicativos GitHub".Os tokens OAuth usam o limite de taxa do usuário de 5.000 por hora.
Os aumentos de limite de taxa podem ser concedidos no nível dos aplicativos GitHub (afetando todas as instalações) e no nível da instalação individual.Os aumentos de limite de taxa são concedidos para cada aplicativo OAuth. Cada token concedido a esse aplicativo OAuth obtém o aumento do limite.
GitHub Apps podem efetuar a autenticação em nome do usuário. O fluxo de autorização é igual ao do OAuth App. Os tokens de acesso do usuário podem expirar e serem renovados com um token de atualização. Para obter mais informações, confira "Atualizar tokens de acesso do usuário" e "Autenticação com um aplicativo GitHub em nome de um usuário."O fluxo do OAuth usado por OAuth Apps autoriza um OAuth App em nome do usuário. Esse é o mesmo fluxo usado para gerar um token de acesso de usuário do GitHub App.

Solicitar níveis de permissão para os recursos

Ao contrário dos aplicativos OAuth, os aplicativos GitHub têm permissões direcionadas que lhes permitem solicitar acesso apenas ao que precisam. Por exemplo, uma Integração Contínua (CI) do aplicativo GitHub pode solicitar acesso de leitura ao conteúdo do repositório e acesso de gravação à API de status. Outro aplicativo GitHub não pode ter acesso de leitura ou de gravação para o código, mas ainda assim pode gerenciar problemas, etiquetas e marcos. Os aplicativos OAuth não podem usar permissões granulares.

AccessAplicativos do GitHub (permissões read ou write)Aplicativos OAuth
Para acesso a repositórios públicosO repositório público precisa ser escolhido durante a instalação.Escopo public_repo.
Para acesso ao código/ao conteúdo do repositórioConteúdo do repositórioEscopo repo.
Para acesso a problemas, rótulos e marcosProblemasEscopo repo.
Para acesso a solicitações de pull, rótulos e marcosSolicitações de pullEscopo repo.
Para acesso a status de commits (para builds de CI)Status do commitEscopo repo:status.
Para acesso a implantações e a status de implantaçõesImplantaçõesEscopo repo_deployment.
Para receber eventos por meio de um webhookUm aplicativo de GitHub inclui um webhook por padrão.Escopo write:repo_hook ou write:org_hook.

Descoberta de repositório

Aplicativos GitHubAplicativos OAuth
Os Aplicativos do GitHub podem examinar /installation/repositories para ver os repositórios que a instalação pode acessar.Os Aplicativos OAuth podem examinar /user/repos em busca de uma exibição de usuário ou /orgs/:org/repos em busca de uma exibição de organização dos repositórios acessíveis.
Os aplicativos GitHub recebem webhooks quando os repositórios são adicionados ou removidos da instalação.Os aplicativos OAuth criam webhooks de organização para notificações quando um novo repositório é criado dentro de uma organização.

Webhooks

Aplicativos GitHubAplicativos OAuth
Por padrão, os aplicativos GitHub têm um único webhook que recebe os eventos que estão configurados para receber para cada repositório ao qual têm acesso.Os aplicativos OAuth solicitam o escopo do webhook para criar um webhook do repositório para cada repositório do qual precisam receber eventos.
O aplicativo GitHub recebe certos eventos a nível da organização com a permissão do integrante da organização.Os aplicativos OAuth solicitam o escopo do webhook da organização para criar um webhook da organização para cada organização da qual precisam para receber eventos a nível da organização.
Os webhooks são desabilitados automaticamente quando o aplicativo GitHub é desinstalado.Os webhooks não serão desabilitados automaticamente se o token de acesso de um aplicativo OAuth for excluído e não houver como limpá-los automaticamente. Você precisará solicitar que os usuários façam isso manualmente.

Acesso Git

Aplicativos GitHubAplicativos OAuth
Os GitHub Apps solicitam a permissão de conteúdo do repositório e usam seu token de acesso de instalação para fazer a autenticação por meio do Git baseado em HTTP. Para obter mais informações, confira "Como gerar um token de acesso de instalação para um Aplicativo GitHub".Os aplicativos OAuth solicitam o escopo da write:public_key e criam uma chave de implantação por meio da API. Depois, você pode usar essa chave para executar comandos do Git.
O token é usado como senha HTTP.O token é usado como nome de usuário HTTP.

Máquina vs. contas de bot

Contas de usuário de máquina são contas pessoais baseadas no OAuth que separam sistemas automatizados usando o sistema de usuário do GitHub.

As contas do bot são específicas para os aplicativos GitHub e são construídas em todos os aplicativos GitHub.

Aplicativos GitHubAplicativos OAuth
Os bots do aplicativo GitHub não consomem uma estação GitHub Enterprise.Uma conta de usuário de máquina consome uma estação GitHub Enterprise.
Como um bot do aplicativo GitHub nunca recebe uma senha, um cliente não pode entrar diretamente nele.Um nome de usuário e senha são concedidos a uma conta de usuário de máquina para ser gerenciada e protegida pelo cliente.