Skip to main content

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

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

Сведения о GitHub Apps и OAuth apps

Как правило, GitHub Apps предпочтительнее OAuth 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 в 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/identifying-and-authorizing-users-for-github-apps).Поток OAuth, который используется в OAuth apps, авторизует OAuth app от имени пользователя. Это тот же поток, который используется для создания маркера доступа пользователя GitHub App.

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

В отличие от OAuth apps, GitHub 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. Дополнительные сведения см. в разделе Генерация токена доступа для установки приложения GitHubOAuth apps запрашивают write:public_key область и создают ключ развертывания через API. Затем этот ключ можно использовать для выполнения команд Git.
Этот маркер используется в качестве пароля HTTP.Этот маркер используется в качестве имени пользователя HTTP.

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

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

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

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