Sobre GitHub Apps e OAuth apps
Em geral, GitHub Apps são preferenciais em vez de OAuth apps. GitHub Apps use permissões refinadas, dê ao usuário mais controle sobre quais repositórios o aplicativo pode acessar e use 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.
Semelhante a OAuth apps, GitHub Apps ainda pode usar o OAuth 2.0 e gerar um tipo de token OAuth (chamado de token de acesso do usuário) e executar ações em nome de um usuário. No entanto, GitHub Apps também pode 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.
GitHub Apps têm webhooks internos e centralizados. GitHub Apps pode receber eventos de webhook para todos os repositórios e organizações que o aplicativo pode acessar. Por outro lado, OAuth apps deve configurar webhooks individualmente para cada repositório e organização.
O limite de taxa para GitHub Apps usar um token de acesso de instalação é dimensionado com o número de repositórios e o número de usuários da organização. Por outro lado, OAuth apps têm limites de taxa de solicitação mais baixos e não escalam.
Há um caso em que um OAuth app é preferencial em vez de um GitHub App. Se seu aplicativo precisar acessar recursos de nível empresarial, como o próprio objeto da empresa, você deverá usar um OAuth app porque GitHub App ainda não é possível receber permissões em uma empresa. GitHub Apps ainda pode acessar recursos corporativos de organização e repositório.
Para obter mais informações sobre GitHub Apps, confira Sobre a criação de aplicativos GitHub.
Para obter mais informações sobre como migrar um existente OAuth app para um GitHub App, consulte Migrando aplicativos OAuth para aplicativos GitHub.
Quem pode instalar GitHub Aplicativos e autorizarOAuth apps?
Você pode instalar Aplicativos GitHub em sua conta pessoal ou nas organizações que você possui. Se você tiver permissões de administrador em um repositório, poderá instalar GitHub Aplicativos em contas da organização. Se um aplicativo GitHub estiver instalado em um repositório e exigir permissões da 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 Funções em uma organização.
Por outro lado, os usuários autorizam OAuth apps, o que dá ao aplicativo a capacidade de atuar como o usuário autenticado. Por exemplo, você pode autorizar um OAuth app que encontre todas as notificações para o usuário autenticado. Você sempre pode revogar permissões de um OAuth app.
Os proprietários da organização podem escolher se permitem que colaboradores externos solicitem acesso para não aprovados OAuth apps e GitHub Apps. Para saber mais, confira Limitando as solicitações de acesso e instalações de aplicativos OAuth e GitHub App.
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 GitHub | OAuth apps |
|---|---|
| Você deve ser um proprietário da organização ou ter permissões de administrador em um repositório para instalar um aplicativo GitHub em uma organização. Se um aplicativo GitHub estiver instalado em um repositório e exigir permissões da organização, o proprietário da organização deverá aprovar o aplicativo. | Você pode autorizar um OAuth app para ter acesso aos recursos. |
| Você pode instalar um aplicativo GitHub em seu repositório pessoal. | Você pode autorizar um OAuth app para ter acesso aos recursos. |
| Você deve ser um proprietário da organização, proprietário do repositório pessoal 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 da organização ou ter permissões de administrador em um repositório para solicitar uma instalação do aplicativo GitHub. | Se uma política de aplicativo de organização estiver ativa, qualquer membro da organização poderá solicitar a instalação de uma OAuth app organização. Um proprietário da organização deve aprovar ou negar a solicitação. |
O que pode GitHub Aplicativos e OAuth apps acesso?
Os proprietários da conta podem usar uma GitHub App conta em uma sem conceder acesso a outra. Por exemplo, você pode instalar um serviço de build de terceiros na organização do seu empregador, mas decidir não conceder acesso desse serviço de build aos repositórios na sua conta pessoal. Um aplicativo GitHub permanecerá instalado se a pessoa que o configurou sair da organização.
Um _autorizado_OAuth app tem acesso a todos os recursos acessíveis do usuário ou do proprietário da organização.
| Aplicativos GitHub | OAuth apps |
|---|---|
| A instalação de um aplicativo GitHub concede ao aplicativo acesso aos repositórios escolhidos por uma conta de usuário ou organização. | Autorizar um OAuth app aplicativo concede acesso ao aplicativo 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 perderá o 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. | |
OAuth apps precisa solicitar o repo escopo para obter acesso a problemas, solicitações de pull ou qualquer coisa pertencente ao repositório. | |
| Aplicativos do GitHub não estão sujeitos a políticas de aplicativos da organização. Um aplicativo GitHub só tem acesso aos repositórios concedidos por um proprietário da organização. | Se uma política de aplicativo da organização estiver ativa, somente um proprietário da organização poderá autorizar a instalação de uma OAuth app. Se instalado, obtém OAuth app 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 de 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. | |
| OAuth apps pode perder o acesso a uma organização ou repositório a qualquer momento com base na alteração do acesso do usuário autorizado. O OAuth app não informará quando ele perder o acesso a um recurso. |
Identificação baseada em token
Observação
GitHub Apps também podem usar um token baseado no usuário. Para saber mais, confira Autenticação com um aplicativo GitHub em nome de um usuário.
| Aplicativos GitHub | OAuth apps |
|---|---|
| Um aplicativo GitHub pode solicitar um token de acesso de instalação usando uma chave privada com um formato de token Web JSON fora de banda. | Um OAuth app token de solicitação pode ser trocado 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 GitHub Apps, 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. |
| GitHub Apps instalados em organizações ou repositórios estão sujeitos a limites de taxa que são dimensionados com o número de instalações. Para saber mais, confira Limites de taxa para aplicativos GitHub. | Os tokens OAuth usam o limite de taxa do usuário de 5.000 solicitações por hora. |
| Os aumentos de limite de taxa podem ser concedidos no nível dos Aplicativos do GitHub (afetando todas as instalações) e no nível da instalação individual. | Os aumentos de limite de taxa são concedidos por OAuth app. Cada token concedido a isso OAuth app obtém o limite aumentado. |
| GitHub Apps pode autenticar em nome do usuário. O fluxo a ser autorizado é o mesmo que o OAuth app fluxo de autorização. Os tokens de acesso do usuário podem expirar e serem renovados com um token de atualização. Para saber mais, confira Atualizar tokens de acesso do usuário e Autenticação com um aplicativo GitHub em nome de um usuário. | O fluxo OAuth usado por OAuth apps autoriza um OAuth app em nome do usuário. Esse é o mesmo fluxo usado para gerar um GitHub App token de acesso do usuário. |
Solicitar níveis de permissão para os recursos
Ao contrário OAuth appsde , GitHub Aplicativos têm permissões direcionadas que permitem que eles solicitem 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. OAuth apps não pode usar permissões granulares.
| Acesso | Aplicativos GitHub (permissões read ou write) | OAuth apps |
|---|---|---|
| Para acesso a repositórios públicos | O repositório público precisa ser escolhido durante a instalação. | Escopo public_repo. |
| Para acesso ao código/ao conteúdo do repositório | Conteúdo do repositório | Escopo repo. |
| Para acesso a problemas, rótulos e marcos | Problemas | Escopo repo. |
| Para acesso a solicitações de pull, rótulos e marcos | Solicitações de pull | Escopo repo. |
| Para acesso aos status de commit (para compilações de CI) | Status do commit | Escopo repo:status. |
| Para acesso a implantações e status de implantações | Implantações | Escopo repo_deployment. |
| Para receber eventos por meio de um webhook | Um aplicativo GitHub inclui um webhook por padrão. | Escopo write:repo_hook ou write:org_hook. |
Descoberta de repositório
| Aplicativos GitHub | OAuth apps |
|---|---|
Os aplicativos GitHub podem verificar / para ver os repositórios que a instalação pode acessar. | |
OAuth apps pode procurar uma exibição /user/repos do usuário ou /orgs/:org/repos uma exibição da organização de repositórios acessíveis. | |
| Aplicativos GitHub recebem webhooks quando os repositórios são adicionados ou removidos da instalação do aplicativo. | |
| OAuth apps crie webhooks da organização para notificações quando um novo repositório é criado em uma organização. |
Webhooks
| Aplicativos GitHub | OAuth apps |
|---|---|
| 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. | |
| OAuth apps solicite o escopo do webhook para criar um webhook de repositório para cada repositório do qual eles precisam receber eventos. | |
| GitHub Apps recebem determinados eventos no nível da organização com permissão de um membro da organização. | |
| OAuth apps solicite o escopo do webhook da organização para criar um webhook de organização para cada organização da qual eles precisam receber eventos no 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 um OAuth apptoken de acesso 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 GitHub | OAuth apps |
|---|---|
| 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 saber mais, confira Gerando um token de acesso de instalação para um aplicativo GitHub | |
| OAuth apps | |
write:public_key solicite o escopo e crie 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
As contas de usuário do computador são contas pessoais baseadas em OAuth que separam sistemas automatizados usando o sistema de usuário do GitHub.
As contas de bot são específicas para GitHub Aplicativos e são incorporadas a cada aplicativo GitHub.
| Aplicativos GitHub | OAuth apps |
|---|---|
| GitHub bots de aplicativo não consomem um GitHub Enterpriseassento de. | Uma conta de usuário do computador consome um GitHub Enterpriseassento de. |
| Como um bot de aplicativo GitHub nunca recebe uma senha, um cliente não pode entrar nele diretamente. | 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. |