--- title: Различия между приложениями GitHub и приложениями OAuth intro: 'Понимание различий между {% data variables.product.prodname_github_apps %} и {% data variables.product.prodname_oauth_apps %} поможет вам решить, какое приложение вы хотите создать. {% data variables.product.prodname_oauth_app %} выступает в качестве пользователя GitHub, тогда как {% data variables.product.prodname_github_app %} использует собственное удостоверение при установке в организации или в репозиториях в организации.' redirect_from: - /early-access/integrations/integrations-vs-oauth-applications - /apps/building-integrations/setting-up-a-new-integration/about-choosing-an-integration-type - /apps/differences-between-apps - /developers/apps/differences-between-github-apps-and-oauth-apps versions: fpt: '*' ghes: '*' ghae: '*' ghec: '*' topics: - GitHub Apps - OAuth Apps shortTitle: GitHub Apps & OAuth Apps ms.openlocfilehash: d70304b71de11a4a24f2acc6c2545e78cbd19b0c ms.sourcegitcommit: f638d569cd4f0dd6d0fb967818267992c0499110 ms.translationtype: MT ms.contentlocale: ru-RU ms.lasthandoff: 10/25/2022 ms.locfileid: '148008709' --- ## Кто может устанавливать приложения GitHub и авторизовывать приложения OAuth? Вы можете установить приложения GitHub в личной учетной записи или в принадлежащих вам организациях. Если у вас есть права администратора в репозитории, вы можете устанавливать приложения GitHub в учетных записях организации. Если приложение GitHub установлено в репозитории и требует разрешений организации, владелец организации должен утвердить это приложение. {% data reusables.apps.app_manager_role %} Для приложений OAuth, наоборот, пользователи предоставляют авторизацию, что дает приложению возможность действовать в качестве пользователя, прошедшего проверку подлинности. Например, можно авторизовать приложение OAuth, которое находит все уведомления для пользователя, прошедшего проверку подлинности. Вы всегда можете отозвать разрешения из приложения OAuth. {% ifversion limit-app-access-requests %} {% data reusables.organizations.restricted-app-access-requests %} {% endif %} {% data reusables.apps.deletes_ssh_keys %} | Приложения GitHub | Приложения OAuth | | ----- | ------ | | Чтобы установить приложение GitHub в организации, вы должны быть владельцем организации или иметь разрешения администратора в репозитории. Если приложение GitHub установлено в репозитории и требует разрешений организации, владелец организации должен утвердить это приложение. | Вы можете авторизовать приложение OAuth для доступа к ресурсам. | | Приложение GitHub можно установить в личном репозитории. | Вы можете авторизовать приложение OAuth для доступа к ресурсам.| | Чтобы удалить приложение GitHub в организации и его права доступа, вы должны быть владельцем организации, владельцем личного репозитория или иметь разрешения администратора в репозитории. | Чтобы удалить права доступа, достаточно удалить маркер доступа OAuth. | | Чтобы запросить установку приложения GitHub, вы должны быть владельцем организации или иметь разрешения администратора в репозитории. | Если в организации активна политика приложения, любой участник этой организации может запросить установку приложения OAuth в организации. Владелец организации должен утвердить или отклонить запрос. | ## Что дает доступ к приложениям GitHub и приложениям OAuth? Владельцы учетных записей могут использовать {% data variables.product.prodname_github_app %} в одной учетной записи, не предоставляя доступа к другой учетной записи. Например, вы можете установить стороннюю службу компиляции в организации вашего работодателя, не предоставляя этой службе доступа к репозиториям в вашей личной учетной записи. Приложение GitHub остается установленным, когда настроивший его пользователь покидает организацию. _Авторизованное_ приложение OAuth App имеет доступ ко всем ресурсам, которые доступны пользователю или владельцу организации. | Приложения GitHub | Приложения OAuth | | ----- | ------ | | Установка приложения GitHub предоставляет приложению доступ к выбранным репозиториям учетной записи пользователя или организации. | Авторизация приложения OAuth предоставляет приложению доступ к ресурсам, доступным пользователю. Например, к репозиториям, к которым у него есть доступ. | | Маркер установки из приложения GitHub теряет доступ к ресурсам, когда администратор удаляет репозитории из установки. | Маркер доступа OAuth теряет доступ к ресурсам, когда пользователь теряет доступ, например при отмене доступа на запись в репозиторий. | | Маркеры доступа установки ограничиваются указанными репозиториями с разрешениями, выбранными создателем приложения. | Маркер доступа OAuth ограничивается через области действия. | | Приложения GitHub могут запрашивать доступ отдельно к проблемам и запросам на вытягивание, без доступа к фактическому содержимому репозитория. | Приложения OAuth должны запросить область действия `repo`, чтобы получить доступ к проблемам, запросам на вытягивание или любым другим ресурсам репозитория. | | Приложения GitHub не подчиняются политикам приложений организации. Приложение GitHub имеет доступ только к репозиториям, для которых владелец организации предоставил соответствующие разрешения. | Если политика приложения организации активна, то только владелец организации может разрешить установку приложения OAuth. При установке приложение OAuth получает доступ к любым ресурсам, видимым для маркера, который владелец организации имеет в утвержденной организации. | | Приложение GitHub получает событие веб-перехватчика при изменении или удалении установки. Это позволяет создателю приложения узнать, что он получил или потерял доступ к определенным ресурсам организации. | Приложения OAuth могут в любое время потерять доступ к организации или репозиторию, если изменится уровень доступа пользователя. Приложение OAuth не сообщает, когда теряет доступ к ресурсу. | ## Идентификация на основе маркеров {% note %} **Примечание.** Приложения GitHub также могут использовать маркер на основе пользователя. Дополнительные сведения см. в статье [Идентификация и авторизация пользователей для приложений GitHub](/apps/building-github-apps/identifying-and-authorizing-users-for-github-apps/). {% endnote %} | Приложения GitHub | Приложения OAuth | | ----- | ----------- | | Приложение GitHub может вне основного процесса запросить маркер доступа к установке с использованием закрытого ключа в формате веб-маркера JSON. | Приложение OAuth может обменять маркер запроса на маркер доступа после перенаправления через веб-запрос. | | Маркер установки идентифицирует приложение как бот приложений GitHub, например @jenkins-bot. | Маркер доступа идентифицирует приложение как пользователя, который предоставил этот маркер приложению, например @octocat. | | Срок действия маркеров установки истекает через определенное время (в настоящее время это 1 час). | Маркеры OAuth остаются активными, пока они не будут отозваны клиентом. | | Для {% data variables.product.prodname_github_apps %}, установленных в организациях или репозиториях, применяются ограничения частоты запросов между серверами. Дополнительные сведения см. в статье [Ограничения скорости для {% data variables.product.prodname_github_apps %}](/developers/apps/building-github-apps/rate-limits-for-github-apps). | Маркеры OAuth используют ограничение скорости для пользователя: {% ifversion fpt or ghec or ghes %}5000{% elsif ghae %}15 000{% endif %} запросов в час. | | Разрешения на увеличение ограничений скорости можно предоставлять как на уровне приложений GitHub (это затронет все установки), так и на уровне отдельных установок. | Разрешение на увеличение ограничения скорости предоставляется для каждого приложения OAuth. Каждый маркер, предоставленный этому приложению OAuth, получает увеличенное ограничение. | | {% data variables.product.prodname_github_apps %} может выполнять проверку подлинности от имени пользователя. Такой механизм называется запросом от пользователя к серверу. Поток для авторизации аналогичен потоку авторизации приложения OAuth. Маркеры "пользователь-сервер" имеют ограниченный срок действия, который можно продлить с помощью маркера обновления. Дополнительные сведения см. в статьях [Обновление маркеров доступа "пользователь — сервер"](/apps/building-github-apps/refreshing-user-to-server-access-tokens/) и [Идентификация и авторизация пользователей для приложений GitHub](/apps/building-github-apps/identifying-and-authorizing-users-for-github-apps/). | Поток OAuth, который используется в {% data variables.product.prodname_oauth_apps %}, авторизует {% data variables.product.prodname_oauth_app %} от имени пользователя. Аналогичный поток, который используется в {% data variables.product.prodname_github_app %} для авторизации запросов от пользователя к серверу. | ## Запрос уровней разрешений для ресурсов В отличие от приложений OAuth, приложения GitHub имеют целевые разрешения, позволяющие им запрашивать доступ только к тем ресурсам, которые им нужны. Например, приложение GitHub для непрерывной интеграции (CI) может запрашивать доступ на чтение к содержимому репозитория и доступ на запись к API состояния. Другое приложение GitHub может управлять проблемами, метками и вехами, не имея доступа на чтение или запись к коду. Приложения OAuth не могут использовать детализированные разрешения. | Access | Приложения GitHub (разрешения `read` или `write`) | Приложения OAuth | | ------ | ----- | ----------- | | **Доступ к общедоступным репозиториям** | Во время установки необходимо выбрать общедоступный репозиторий. | Область `public_repo`. | | **Доступ к коду или содержимому репозитория** | Содержимое репозитория | Область `repo`. | | **Доступ к проблемам, меткам и вехам** | Проблемы | Область `repo`. | | **Доступ к запросам на вытягивание, меткам и вехам** | Запросы на вытягивание | Область `repo`. | | **Доступ к состояниям фиксации (для сборок CI)** | Состояния фиксаций | Область `repo:status`. | | **Доступ к развертываниям и состояниям развертывания** | Развернутые приложения | Область `repo_deployment`. | | **Для получения событий через веб-перехватчик** | Приложение GitHub по умолчанию включает веб-перехватчик. | Область `write:repo_hook` или `write:org_hook`. | ## Обнаружение репозитория | Приложения GitHub | Приложения OAuth | | ----- | ----------- | | Приложения GitHub могут получить из `/installation/repositories` список репозиториев, к которые установка имеет доступ. | Приложения OAuth могут получить из `/user/repos` представление пользователя, а из `/orgs/:org/repos` — представление организации для доступных репозиториев. | | Приложения GitHub получают действия веб-перехватчиков при добавлении репозиториев в установку и при удалении их из нее. | Приложения OAuth создают действия веб-перехватчиков организации для уведомлений о создании нового репозитория в организации. | ## Веб-перехватчики | Приложения GitHub | Приложения OAuth | | ----- | ----------- | | По умолчанию приложения GitHub имеют один веб-перехватчик, который получает события, для которых она настроен, по каждому репозиторию, к которому он имеет доступ. | Приложения OAuth запрашивают область веб-перехватчика, чтобы создать веб-перехватчик на уровне репозитория для каждого репозитория, из которого они будут получать события. | | Приложения GitHub получают определенные события уровня организации с разрешения участника этой организации. | Приложения OAuth запрашивают область веб-перехватчика организации, чтобы создать веб-перехватчик организации для каждой организации, из которых они будут получать события уровня организации. | | Веб-перехватчики автоматически отключаются при удалении приложения GitHub. | Веб-перехватчики не отключаются автоматически, если маркер доступа приложения OAuth удаляется, и их невозможно очистить автоматически. Вам придется обратиться к пользователям с просьбой сделать это вручную.| ## Доступ к Git | Приложения GitHub | Приложения OAuth | | ----- | ----------- | | Приложения GitHub запрашивают разрешение содержимого репозитория и используют маркер установки для проверки подлинности с помощью [Git на основе HTTP](/apps/building-github-apps/authenticating-with-github-apps/#http-based-git-access-by-an-installation). | Приложения OAuth запрашивают область `write:public_key` и [создают ключ развертывания](/rest/reference/deployments#create-a-deploy-key) через API. Затем этот ключ можно использовать для выполнения команд Git. | | Этот маркер используется в качестве пароля HTTP. | Этот маркер используется в качестве имени пользователя HTTP. | ## Учетные записи компьютеров и ботов Учетные записи пользователей компьютера — это личные учетные записи на основе OAuth, которые используются для различения автоматизированных систем на основе системы пользователей GitHub. Учетные записи ботов используются только в приложениях GitHub и встраиваются в каждое приложение GitHub. | Приложения GitHub | Приложения OAuth | | ----- | ----------- | | Боты приложений GitHub не используют рабочее место {% data variables.product.prodname_enterprise %}. | Каждая учетная запись пользователя использует одно рабочее место {% data variables.product.prodname_enterprise %}. | | Так как боту приложения GitHub никогда не назначается пароль, клиент не может войти в него напрямую. | Учетной записи пользователя компьютера предоставляется имя пользователя и пароль, управление и защиту для которого клиент выполняет самостоятельно. |