Skip to main content

Области для приложений OAuth

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

При настройке приложения OAuth в GitHub запрашиваемые области демонстрируются пользователю в форме авторизации.

Примечание. Если вы создаете приложение GitHub, указывать области в запросе авторизации не нужно. Дополнительные сведения см. в статье Идентификация и авторизация пользователей для приложений GitHub.

Если ваше OAuth App не имеет доступа к браузеру, например средство CLI, указывать область для проверки подлинности пользователей в вашем приложении не нужно. Дополнительные сведения см. в статье Авторизация приложений OAuth.

Проверьте заголовки, чтобы узнать, какие области OAuth у вас есть и что принимает действие API:

$ curl -H "Authorization: Bearer OAUTH-TOKEN" https://HOSTNAME/api/v3/users/codertocat -I
HTTP/2 200
X-OAuth-Scopes: repo, user
X-Accepted-OAuth-Scopes: user
  • X-OAuth-Scopes выводит список областей, разрешенных токеном;
  • X-Accepted-OAuth-Scopes выводит список областей, проверяемых действием.

Доступные области

Имя | Описание -----|-----------| site_admin | Предоставляет администраторам сайта доступ к GitHub Enterprise Server Конечным точкам API администрирования. repo | Предоставляет полный доступ к общедоступным, внутренним и частным репозиториям, включая доступ на чтение и запись к коду, статусам фиксации, приглашениям в репозиторий, участникам совместной работы, статусам развертывания в веб-перехватчикам репозитория. Примечание. Помимо ресурсов, связанных с репозиторием, область repo также предоставляет доступ к управлению ресурсами, принадлежащими организации, включая проекты, приглашения, членство в команде и веб-перехватчики. Эта область также предоставляет возможность управлять проектами, принадлежащими пользователям.  repo:status| Предоставляет доступ на чтение и запись к состояниям фиксаций в частных и внутренних репозиториях. Эта область позволяет предоставлять другим пользователям или службам доступ к состояниям фиксаций в частных репозиториях, не предоставляя доступ к коду.  repo_deployment| Предоставляет доступ к состояниям развертывания для внутренних и частных репозиториев. Эта область позволяет предоставлять другим пользователям или службам доступ к состояниям развертывания в частных репозиториях, не предоставляя доступ к коду.  repo:invite | Предоставляет возможность принимать/отклонять приглашения к совместной работе в репозитории. Эта область позволяет предоставлять другим пользователям или службам доступ к приглашениям, не предоставляя доступ к коду. admin:repo_hook | Предоставляет доступ на чтение, запись, закрепление и удаление перехватчиков репозитория в частном или внутреннем репозитории. Область предоставляет полный доступ к репозиториям, включая перехватчики репозитория. Область admin:repo_hook позволяет ограничить доступ перехватчиками репозитория.  write:repo_hook| Предоставляет доступ на чтение, запись и закрепление к перехватчикам в частных или внутренних репозиториях.  read:repo_hook| Предоставляет доступ на чтение и закрепление к перехватчикам в частных или внутренних репозиториях. admin:org | Полное управление организацией и ее командами, проектами и членством.  write:org| Доступ на чтение и запись к членству в организации, проектам организации и членству в командах.  read:org| Доступ только для чтения к членству в организации, проектам организации и членству в командах. admin:public_key | Полное управление открытыми ключами.  write:public_key| Создание, перечисление и просмотр сведений об открытых ключах.  read:public_key| Перечисление и просмотр сведений об открытых ключах. admin:org_hook | Предоставляет доступ на чтение, запись, закрепление и удаление к перехватчикам организации. Примечание. Токены OAuth смогут выполнять только эти действия и только с перехватчиками организации, созданными приложением OAuth. Personal access tokens смогут выполнять эти действия только с перехватчиками организации, созданными пользователем. gist | Предоставляет доступ на запись к gist. notifications | Предоставляет:
доступ на чтение к уведомлениям пользователя;
разрешение отмечать цепочки как прочитанные;
разрешение на просмотр и отмену отслеживания репозитория; и
доступ на чтение, запись и удаление к подпискам на цепочки. user | Предоставляет доступ на чтение и запись только к данным профиля. Обратите внимание, что эта область включает user:email и user:follow.  read:user| Предоставляет доступ на чтение к данным профиля пользователя.  user:email| Предоставляет доступ на чтение к адресам электронной почты пользователя.  user:follow| Предоставляет доступ для подписки или отмены подписки на других пользователей. delete_repo | Предоставляет доступ к удалению административных репозиториев. write:discussion | Предоставляет доступ на чтение и запись к обсуждениям команд.  read:discussion | Предоставляет доступ на чтение к обсуждениям команд. write:packages | Разрешает отправлять или публиковать пакеты в GitHub Packages. Дополнительные сведения см. в статье Публикация пакета. read:packages | Разрешает скачивать и устанавливать пакеты из GitHub Packages. Дополнительные сведения об установке пакета см. в этой статье. delete:packages | Разрешает удалять пакеты из GitHub Packages. Дополнительные сведения см. в разделе Удаление и восстановление пакета. admin:gpg_key | Полное управление ключами GPG.  write:gpg_key| Создание, перечисление и просмотр сведений о ключах GPG.  read:gpg_key| Список и просмотр сведений о ключах GPG. workflow | Разрешает добавлять и обновлять файлы рабочих процессов GitHub Actions. Файлы рабочих процессов можно фиксировать без этой области, если в другой ветви того же репозитория существует такой же файл (с таким же адресом и содержимым). Файлы рабочих процессов могут предоставлять GITHUB_TOKEN с другим набором областей. Дополнительные сведения см. в разделе Проверка подлинности в рабочем процессе. admin:enterprise | Обеспечивает полный контроль над функциональными возможностями предприятия. Дополнительные сведения см. в статье Управление корпоративными учетными записями в документации по API GraphQL.

Включает manage_runners:enterprise и read:enterprise.  manage_runners:enterprise |Обеспечивает полный контроль над локальными средствами выполнения тестов на предприятии. Дополнительные сведения см. в статье "Сведения о локально размещенных средствах выполнения."  read:enterprise | Чтение всех данных в корпоративном профиле. Не включает данные профиля участников предприятия или организаций.

Примечание. Ваше приложение OAuth может запрашивать области при начальном перенаправлении. Можно указать несколько областей, перечислив их через пробел в виде %20:

https://github.com/login/oauth/authorize?
  client_id=...&
  scope=user%20repo_deployment

Запрошенные и предоставленные области

Атрибут scope перечисляет области, присоединенные к предоставленному пользователем токену. Обычно эти области идентичны запрошенным областям. Однако пользователи могут редактировать свои области, фактически предоставляя вашему приложению меньше доступа, чем вы изначально запрашивали. Кроме того, пользователи могут редактировать области токенов после завершения потока OAuth. Учитывайте такую возможность и корректируйте поведение своего приложения соответствующим образом.

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

Кроме того, приложения могут в любой момент снова отправить пользователя в поток, чтобы получить дополнительное разрешение, но не забывайте, что при этом пользователи всегда могут отказаться.

Ознакомьтесь с руководством по основам проверки подлинности, где приводятся рекомендации по обработке изменяемых областей маркеров.

Нормализованные области

При запросе нескольких областей токен сохраняется с нормализованным списком областей, в который не входят области, косвенно включенные другой запрошенной областью. Например, при запросе user,gist,user:email выдается токен с областями user и gist, поскольку доступ, предоставленный областью user:email, входит в область user.