Skip to main content

Enterprise Server 3.22 в настоящее время доступен в качестве кандидата на выпуск.

Различия между приложениями GitHub и приложениями OAuth

Как правило, предпочтительнее GitHub Apps использовать OAuth apps точные разрешения, обеспечить больше контроля над доступом репозиториев, к которым может получить доступ приложение, и использовать кратковременные маркеры.

О GitHub Apps и OAuth apps

В общем случае предпочтительнее GitHub AppsOAuth apps. GitHub Apps используйте подробные разрешения, предоставьте пользователю больше контроля над тем, к каким репозиториям приложение может получить доступ, и использовать короткие маркеры. Эти свойства могут затвердить безопасность приложения, ограничив ущерб, который можно было бы сделать, если учетные данные вашего приложения были просочились.

OAuth appsАналогично, GitHub Apps можно по-прежнему использовать OAuth 2.0 и создавать тип маркера OAuth (называемый маркером доступа пользователя) и выполнять действия от имени пользователя. Однако также GitHub Apps может действовать независимо от пользователя. Это полезно для автоматизации, для которых не требуются входные данные пользователя. Приложение будет продолжать работать, даже если пользователь, установивший приложение в организации, покидает организацию.

GitHub Apps имеют встроенные, централизованные веб-перехватчики. GitHub Apps может получать события веб-перехватчика для всех репозиториев и организаций, к которые приложение может получить доступ. И наоборот, OAuth apps необходимо настроить веб-перехватчики по отдельности для каждого репозитория и организации.

Ограничение скорости использования маркера доступа к GitHub Apps установке масштабируется с числом репозиториев и числом пользователей организации. И наоборот, OAuth apps имеют более низкие ограничения скорости и не масштабировать.

Существует один случай, когда OAuth app предпочтительнее по сравнению с GitHub App. Если вашему приложению требуется доступ к ресурсам корпоративного уровня, таким как сам корпоративный объект, следует использовать такую OAuth app возможность, так как GitHub App еще не удается предоставить разрешения для предприятия. GitHub Apps по-прежнему может получить доступ к ресурсам организации и репозитория предприятия.

Дополнительные сведения см. в GitHub Appsразделе О создании приложений GitHub.

Дополнительные сведения о переносе существующего OAuth app в a GitHub Appсм. в разделе Миграция OAuth приложений на GitHub Apps.

Кто может установить GitHub Приложения и авторизоватьOAuth apps?

Вы можете установить приложения GitHub в свой личный аккаунт или в организации, которыми вы владеете. Если у вас есть права администратора в репозитории, вы можете установить приложения GitHub на учётные записи организации. Если приложение GitHub установлено в репозитории и требует разрешения организации, владелец организации должен одобрить приложение.

По умолчанию управлять настройками приложений GitHub в организации могут только владельцы организации. Чтобы разрешить дополнительным пользователям изменять параметры разработчика приложений GitHub, принадлежащих организации, владелец может предоставить им разрешения диспетчера приложений GitHub. Диспетчеры приложений GitHub не могут управлять сторонними приложениями. Дополнительные сведения о добавлении и удалении диспетчеров приложений GitHub в организации см. в разделе Роли в организации.

В отличие от этого, пользователи могут авторизовать OAuth appsприложение, которое дает приложению возможность выступать в качестве пользователя, прошедшего проверку подлинности. Например, вы можете авторизовать OAuth app все уведомления для прошедшего проверку подлинности пользователя. Вы всегда можете отозвать разрешения из .OAuth app

Владельцы организации могут выбрать, разрешать ли внешним сотрудникам запрашивать доступ к неоценимым OAuth apps и GitHub Apps. Дополнительные сведения см. в разделе Ограничение запросов и установок доступа приложений OAuth и GitHub.

Предупреждение

Отмена всех разрешений от OAuth app удаляет все ключи SSH, созданные от имени пользователя, включая ключ развертывания.

Приложения GitHubOAuth apps
Вы должны быть владельцем организации или иметь права администратора в репозитории, чтобы установить приложение GitHub в организации. Если приложение GitHub установлено в репозитории и требует разрешения организации, владелец организации должен одобрить приложение.Вы можете авторизовать OAuth app доступ к ресурсам.
Вы можете установить приложение GitHub на свой личный репозиторий.Вы можете авторизовать OAuth app доступ к ресурсам.
Вы должны быть владельцем организации, владельцем личного репозитория или иметь права администратора в репозитории, чтобы удалить приложение GitHub и удалить его доступ.Чтобы удалить права доступа, достаточно удалить маркер доступа OAuth.
Вы должны быть владельцем организации или иметь права администратора в репозитории, чтобы запросить установку приложения GitHub.Если политика приложения организации активна, любой член организации может запросить установку OAuth app в организации. Владелец организации должен утвердить или отклонить запрос.

Что может GitHub Приложения и OAuth apps доступ?

Владельцы учетных записей могут использовать GitHub App одну учетную запись без предоставления доступа к другой. Например, вы можете установить стороннюю службу компиляции в организации вашего работодателя, не предоставляя этой службе доступа к репозиториям в вашей личной учетной записи. Приложение GitHub остаётся установленным, если человек, который его настроил, покидает организацию.

_Авторизованный_OAuth app имеет доступ ко всем доступным ресурсам пользователя или владельца организации.

Приложения GitHubOAuth apps
Установка приложения GitHub предоставляет приложению доступ к выбранным репозиториям пользователя или организации.Авторизация OAuth app приложения предоставляет приложению доступ к доступным ресурсам пользователя. Например, к репозиториям, к которым у него есть доступ.
Токен установки из приложения GitHub теряет доступ к ресурсам, если администратор удаляет репозитории из установки.Маркер доступа OAuth теряет доступ к ресурсам, когда пользователь теряет доступ, например при отмене доступа на запись в репозиторий.
Маркеры доступа установки ограничиваются указанными репозиториями с разрешениями, выбранными создателем приложения.Маркер доступа OAuth ограничивается через области действия.
Приложения GitHub могут запрашивать отдельный доступ к проблемам и pull requests, не обращаясь к реальному содержимому репозитория.
OAuth apps необходимо запросить repo область, чтобы получить доступ к проблемам, запросам на вытягивание или всем, принадлежащим репозиторию.
Приложения GitHub не подчиняются политикам приложений организации. Приложение GitHub имеет доступ только к репозиториям, предоставленным владельцем организации.Если политика приложения организации активна, только владелец организации может авторизовать установку OAuth app. При установке доступ к маркеру, OAuth app который владелец организации имеет в утвержденной организации.
Приложение GitHub получает событие webhook при изменении или удалении установки. Это позволяет создателю приложения узнать, что он получил или потерял доступ к определенным ресурсам организации.
OAuth apps в любое время может потерять доступ к организации или репозиторию на основе изменения доступа пользователя. Он OAuth app не сообщит вам, когда он теряет доступ к ресурсу.

Идентификация на основе маркеров

Примечание.

GitHub Apps также могут использовать пользовательский токен. Дополнительные сведения см. в разделе Аутентификация с помощью приложения GitHub от имени пользователя.

Приложения GitHubOAuth apps
Приложение GitHub может запросить токен доступа установки, используя приватный ключ с форматом веб-токена JSON вне диапазона.Маркер OAuth app запроса можно обменять на маркер доступа после перенаправления через веб-запрос.
Токен установки идентифицирует приложение как бот GitHub Apps, например @jenkins-bot.Маркер доступа идентифицирует приложение как пользователя, который предоставил этот маркер приложению, например @octocat.
Срок действия маркеров доступа к установке истекает после предопределенного времени (в настоящее время 1 час).Маркеры OAuth остаются активными, пока они не будут отозваны клиентом.
GitHub Apps установленные в организациях или репозиториях ограничения частоты, масштабируемые с количеством установок. Дополнительные сведения см. в разделе Ограничения по тарифам для приложений GitHub.Маркеры OAuth используют ограничение скорости пользователя в 5000 запросов в час.
Повышение лимита тарифов может быть предоставлено как на уровне приложений GitHub (затрагивая все установки), так и на уровне индивидуальной установки.Увеличение ограничения скорости предоставляется по каждому OAuth app. Каждый маркер, предоставленный для этого OAuth app , получает увеличенное ограничение.
GitHub Apps может проходить проверку подлинности от имени пользователя. Поток авторизации совпадает с потоком OAuth app авторизации. Срок действия маркеров доступа пользователей может быть продлен с помощью маркера обновления. Дополнительные сведения см. в разделе [AUTOTITLE и Обновление маркеров доступа пользователей](/apps/creating-github-apps/authenticating-with-a-github-app/authenticating-with-a-github-app-on-behalf-of-a-user).Поток OAuth, OAuth apps используемый авторизацией OAuth app от имени пользователя. Это тот же поток, который используется для создания маркера доступа пользователей GitHub App .

Запрос уровней разрешений для ресурсов

В отличие от GitHub приложения имеют целевые OAuth appsразрешения, которые позволяют им запрашивать доступ только к нужным им ресурсам. Например, приложение GitHub с непрерывной интеграцией (CI) может запрашивать доступ к содержимому репозитория и записывать в API статуса. Другое приложение GitHub не может иметь доступа к чтению или записи кода, но при этом может управлять проблемами, метками и этапами. OAuth apps Не удается использовать детализированные разрешения.

ОткрытьGitHub Приложения (read или write разрешения)OAuth apps
Доступ к общедоступным репозиториямВо время установки необходимо выбрать общедоступный репозиторий.Область public_repo.
Доступ к коду или содержимому репозиторияСодержимое репозиторияОбласть repo.
Доступ к проблемам, меткам и вехамПроблемыОбласть repo.
Доступ к запросам на вытягивание, меткам и вехамЗапросы на включение внесенных измененийОбласть repo.
Доступ к состояниям фиксации (для сборок CI)Состояния фиксацийОбласть repo:status.
Доступ к развертываниям и состояниям развертыванияРазвертыванияОбласть repo_deployment.
Для получения событий через веб-перехватчикПриложение GitHub по умолчанию включает веб-хук.Область write:repo_hook или write:org_hook.

Обнаружение репозитория

Приложения GitHubOAuth apps
GitHub Приложения могут посмотреть /installation/repositories, чтобы увидеть репозитории, к которым может получить доступ для установки.
OAuth apps может искать /user/repos представление пользователя или /orgs/:org/repos представление организации доступных репозиториев.
Приложения GitHub получают вебхуки при добавлении или удалении репозиториев из установки.
OAuth apps создайте веб-перехватчики организации для уведомлений при создании нового репозитория в организации.

Веб-перехватчики

Приложения GitHubOAuth apps
По умолчанию приложения GitHub имеют один вебхук, который получает события, на которые они настроены, для каждого репозитория, к которому доступен.
OAuth apps запросите область веб-перехватчика, чтобы создать веб-перехватчик репозитория для каждого репозитория, из которых они должны получать события.
Приложения GitHub получают определённые мероприятия на уровне организации с разрешения членов организации.
OAuth apps запросите область веб-перехватчика организации, чтобы создать веб-перехватчик организации для каждой организации, из которых они должны получать события уровня организации.
Webhooks автоматически отключаются при удалении приложения GitHub.Веб-перехватчики не отключаются автоматически, если OAuth appмаркер доступа удаляется, и их очистка не выполняется автоматически. Вам придется обратиться к пользователям с просьбой сделать это вручную.

Доступ к Git

Приложения GitHubOAuth apps
Приложения GitHub запрашивают разрешение на доступ к содержимому репозитория и используют ваш токен доступа для аутентификации через HTTP-базируемый Git. Дополнительные сведения см. в разделе Генерация токена доступа для установки приложения GitHub
OAuth apps попросите write:public_key область и создайте ключ развертывания с помощью API. Затем этот ключ можно использовать для выполнения команд Git.
Этот маркер используется в качестве пароля HTTP.Этот маркер используется в качестве имени пользователя HTTP.

Учетные записи компьютеров и ботов

Учетные записи пользователей машины — это личные аккаунты на базе OAuth, которые разделяют автоматизированные системы с помощью пользовательской системы GitHub.

Аккаунты ботов специфичны для приложений GitHub и встроены в каждое приложение GitHub.

Приложения GitHubOAuth apps
GitHub боты приложений GitHub Enterprise не используютместо.Учетная запись пользователя компьютера использует GitHub Enterpriseместо.
Поскольку бот приложения GitHub никогда не получает пароль, клиент не может войти в него напрямую.Учетной записи пользователя компьютера предоставляется имя пользователя и пароль, управление и защиту для которого клиент выполняет самостоятельно.