Обзор и введение

Info

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

Что такое OAuth 2.0?

OAuth 2.0 — отраслевой стандарт авторизации (RFC 6749), который позволяет клиентским приложениям получать делегированный доступ к защищенным ресурсам от имени владельца ресурсов.

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

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

Роли в OAuth 2.0

В OAuth 2.0 участвуют четыре основные роли:

РольВ GitVerseОписание
Resource OwnerПользователь GitVerseВладелец ресурсов, который предоставляет приложению доступ
ClientПриложение OAuth 2.0Стороннее приложение, запрашивающее доступ
Authorization ServerGitVerseАвторизует приложение и выдает токены
Resource ServerAPI GitVerseПринимает access token и предоставляет доступ к защищенным ресурсам

Что такое приложение OAuth 2.0?

Приложение OAuth 2.0 — зарегистрированное в GitVerse клиентское приложение, которое может получать делегированный доступ к API GitVerse от имени пользователя.

Доступ приложения может ограничиваться областями доступа (scope). Полный список поддерживаемых областей доступа см. в разделе Области доступа.

GitVerse выступает в роли OAuth 2.0 Authorization Server: принимает запросы авторизации, получает подтверждение пользователя и выдает приложению токены доступа.

После регистрации приложения OAuth 2.0 вы можете:

  • предоставлять сторонним приложениям доступ к API GitVerse без передачи им учетных данных пользователя;
  • ограничивать доступ приложений с помощью поддерживаемых областей доступа (scope);
  • отзывать ранее предоставленный доступ;
  • интегрировать внешние сервисы — CI/CD-системы, IDE, инструменты мониторинга, аналитики и другие приложения.

Типы приложений

GitVerse поддерживает два типа приложений OAuth 2.0:

ТипКто создаетГде управляетсяОбласть доступа
ЛичноеПользователь/user/settings/applicationsРесурсы пользователя и публичные ресурсы
ОрганизационноеOwner/Admin организации/org/:org/settings/applicationsРазрешенные ресурсы организации и публичные ресурсы

Note

Создание организационного OAuth-приложения не предоставляет ему автоматический доступ ко всем ресурсам организации. Фактический доступ определяется правами пользователя, настройками приложения и предоставленными областями доступа.

Типы клиентов

OAuth 2.0 различает Конфидециальный и Публичный клиенты.

ТипОписаниеclient_secretPKCEПримеры
КонфидециальныйПриложения, способные безопасно хранить секрет клиентаИспользуетсяОбязателенBackend-сервис, серверная CI/CD-система
ПубличныйПриложения, которые не могут безопасно хранить секрет клиентаНе используетсяОбязателенМобильное приложение, десктопное приложение, SPA, CLI

Tip

Для всех типов клиентов в GitVerse используется PKCE. Подробнее см. в FAQ: PKCE и Лучших практиках.

Как это работает

В GitVerse используется Authorization Code Flow с PKCE:

  1. Приложение формирует code_verifier, вычисляет code_challenge и перенаправляет пользователя на endpoint авторизации GitVerse.
  2. Пользователь подтверждает предоставление приложению доступа.
  3. GitVerse перенаправляет пользователя обратно на зарегистрированный redirect_uri и передает authorization code.
  4. Приложение проверяет параметр state.
  5. Приложение обменивает authorization code и code_verifier на access_token и refresh_token.
  6. Приложение использует access_token для обращения к API GitVerse в пределах предоставленных прав.

Note

OAuth 2.0 в GitVerse используется для авторизации доступа к API. GitVerse не предоставляет OpenID Connect и не использует OAuth 2.0 как механизм аутентификации пользователя.

С чего начать