Часто задаваемые вопросы (FAQ)
Info
Ответы на популярные вопросы о приложениях OAuth 2.0 в GitVerse.
Общие вопросы
В чем разница между Конфиденциальным и Публичным клиентом?
Конфиденциальный клиент — серверное приложение с client_secret, которое безопасно хранит секрет на сервере.
Публичный клиент — приложение без секрета (мобильное, десктопное, SPA).
Единственное различие — способ авторизации на token endpoint: Public-клиент авторизируется только по client_id,
а Конфиденциальный клиент — по client_id + client_secret. Оба типа клиентов используют PKCE.
Подробная таблица со сравнением см. в разделе Типы клиентов.
Можно ли использовать Implicit Grant?
Нет. GitVerse поддерживает только Authorization Code Flow с PKCE.
Implicit Grant (response_type=token) отклоняется ошибкой unsupported_response_type,
так как он устаревший и уязвимый (токен в URL передается в открытом виде).
Подробнее см. в разделе Авторизация приложений OAuth 2.0.
Можно ли использовать Client Credentials Grant?
Нет. Автоматизированная авторизация (без участия пользователя) в текущей реализации не поддерживается.
Можно ли использовать Device Authorization Grant?
Нет. Device Authorization Grant (RFC 8628) в текущей реализации не поддерживается. GitVerse поддерживает только Authorization Code Flow с PKCE. Подробнее см. в разделе Авторизация приложений OAuth 2.0.
PKCE
PKCE обязателен для всех клиентов?
Да. PKCE обязателен для всех типов клиентов (Публичных и Конфиденциальных) на GitVerse. См. Типы клиентов.
Какие методы PKCE поддерживаются?
Поддерживаются два метода code_challenge_method:
S256(SHA-256) — рекомендуется, по умолчанию;plain— без хеширования (менее безопасный).
Создание и управление приложениями
Я забыл Клиентский ключ. Можно ли его восстановить?
Нет. Клиентский ключ хранится в хешированном виде (bcrypt) и не может быть восстановлен. Единственный способ — нажать Сгенерировать новый ключ:
- Перейдите в настройки приложения.
- Нажмите Сгенерировать новый ключ.
- Сохраните новое значение.
Warning
Старый secret сразу станет недействительным. Активные токены, выданные до регенерации, остаются действительными.
Сколько приложений я могу создать?
На текущий момент ограничений на количество приложений нет.
Какие Redirect URI разрешены?
https://...— любые HTTPS-URL (точный URI, без wildcard);http://localhost:*— HTTP разрешен только для localhost (локальная разработка).
Wildcard-URI (*, https://*, https://*.example.com) не разрешены.
Scope и права
Полный список доступных scope см. в Областях доступа.
Чем write:repository отличается от write:user?
write:repository управляет репозиториями: просмотр кода, файлов, коммитов, веток, тегов, релизов, wiki, коллабораторов, форков, webhook’ов, Actions + создание, изменение и удаление этих ресурсов.
write:user управляет профилем пользователя: просмотр профиля, email, аватара, SSH/GPG-ключей + изменение этих данных, подписок, приложений OAuth 2.0 и access-токенов.
Оба scope независимы: write:repository не дает прав на изменение профиля, а write:user не дает прав на работу с репозиториями.
Что произойдет, если приложение запросит другие scope, чем при первой авторизации?
Если приложение в будущем запросит другие scope (отличные от изначально подтвержденных пользователем), весь процесс авторизации отклонится — потребуется полная повторная авторизация.
Что происходит с неизвестными scope?
Если приложение запрашивает scope, который не известен GitVerse, такой scope игнорируется — он не вызывает ошибку и не прерывает флоу авторизации. Запрошенный scope просто не включается в выданный access_token.
Warning
Если вы опечатались в названии scope, он будет проигнорирован и приложение получит меньшие права, чем ожидалось.
Безопасность
Что делать, если я подозреваю компрометацию Клиентского ключа?
Срочно нажмите Сгенерировать новый ключ:
- Перейдите в настройки приложения.
- Нажмите Сгенерировать новый ключ.
- Обновите ключ в вашем приложении.
Подробнее см. в разделе Управление приложениями.
Как отозвать доступ приложению?
- Перейдите в Приложения.
- Найдите нужное приложение.
- Нажмите Отозвать.
- Подтвердите действие.
Все токены этого приложения сразу станут недействительными.
Подробнее читайте в разделе Просмотр авторизованных приложений.
Как работает защита от CSRF?
Используйте параметр state при запросе авторизации:
- Сгенерируйте случайную строку
state. - Передайте ее в
GET /authorize?state=.... - При callback проверьте, что возвращенный
stateсовпадает с оригиналом.
Подробнее о защите от CSRF см. в Лучших практиках.
Организации и администрирование
Чем организационное приложение отличается от личного?
Личное приложение принадлежит пользователю и имеет доступ к его ресурсам + публичным ресурсам.
Организационное приложение принадлежит организации (создается Owner/Admin) и имеет доступ к ресурсам организации + публичным ресурсам, но не к личным ресурсам пользователей.
Дополнительно
Подробности по авторизации, токенам и устранению ошибок см. в Справочной документации:
- Решение проблем — диагностика ошибок авторизации;
- Жизненный цикл токенов — сроки жизни, ротация, инвалидация.