21 KiB
title, intro, redirect_from, versions, topics, shortTitle, ms.openlocfilehash, ms.sourcegitcommit, ms.translationtype, ms.contentlocale, ms.lasthandoff, ms.locfileid
| title | intro | redirect_from | versions | topics | shortTitle | ms.openlocfilehash | ms.sourcegitcommit | ms.translationtype | ms.contentlocale | ms.lasthandoff | ms.locfileid | ||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Различия между приложениями GitHub и приложениями OAuth | Понимание различий между {% 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 %} использует собственное удостоверение при установке в организации или в репозиториях в организации. |
|
|
|
GitHub Apps & OAuth Apps | d70304b71de11a4a24f2acc6c2545e78cbd19b0c | f638d569cd |
MT | ru-RU | 10/25/2022 | 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.
{% endnote %}
| Приложения GitHub | Приложения OAuth |
|---|---|
| Приложение GitHub может вне основного процесса запросить маркер доступа к установке с использованием закрытого ключа в формате веб-маркера JSON. | Приложение OAuth может обменять маркер запроса на маркер доступа после перенаправления через веб-запрос. |
| Маркер установки идентифицирует приложение как бот приложений GitHub, например @jenkins-bot. | Маркер доступа идентифицирует приложение как пользователя, который предоставил этот маркер приложению, например @octocat. |
| Срок действия маркеров установки истекает через определенное время (в настоящее время это 1 час). | Маркеры OAuth остаются активными, пока они не будут отозваны клиентом. |
| Для {% data variables.product.prodname_github_apps %}, установленных в организациях или репозиториях, применяются ограничения частоты запросов между серверами. Дополнительные сведения см. в статье Ограничения скорости для {% data variables.product.prodname_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. Маркеры "пользователь-сервер" имеют ограниченный срок действия, который можно продлить с помощью маркера обновления. Дополнительные сведения см. в статьях Обновление маркеров доступа "пользователь — сервер" и Идентификация и авторизация пользователей для приложений GitHub. | Поток 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. | Приложения OAuth запрашивают область write:public_key и создают ключ развертывания через API. Затем этот ключ можно использовать для выполнения команд Git. |
| Этот маркер используется в качестве пароля HTTP. | Этот маркер используется в качестве имени пользователя HTTP. |
Учетные записи компьютеров и ботов
Учетные записи пользователей компьютера — это личные учетные записи на основе OAuth, которые используются для различения автоматизированных систем на основе системы пользователей GitHub.
Учетные записи ботов используются только в приложениях GitHub и встраиваются в каждое приложение GitHub.
| Приложения GitHub | Приложения OAuth |
|---|---|
| Боты приложений GitHub не используют рабочее место {% data variables.product.prodname_enterprise %}. | Каждая учетная запись пользователя использует одно рабочее место {% data variables.product.prodname_enterprise %}. |
| Так как боту приложения GitHub никогда не назначается пароль, клиент не может войти в него напрямую. | Учетной записи пользователя компьютера предоставляется имя пользователя и пароль, управление и защиту для которого клиент выполняет самостоятельно. |