Быстрый старт: OAuth 2.0 за 5 минут
Info
Это пошаговое руководство по созданию Конфиденциальному OAuth 2.0 клиенту и получению
access_tokenс использованием Authorization Code Flow и PKCE.
1. Создание приложения
- Войдите в свой аккаунт GitVerse.
- Перейдите в Настройки профиля или Настройки организации → Приложения.
- Нажмите Добавить приложение.
- Заполните форму:
Название:
My First App
URI для перенаправления:https://your-server.ru/callback
Конфиденциальный клиент: ✓ (включено)
Пропускать авторизацию для публичных клиентов после первого доступа: ✗ (выключено)
- Нажмите Создать приложение.
- Сохраните ID клиента (
client_id) и секрет клиента (client_secret). Секрет клиента отображается только один раз.
Warning
client_secretпредназначен только для приложений, способных безопасно его хранить. Не размещайте секрет в фронтенд-коде, мобильном или десктопном приложении.
2. Подготовка PKCE и state
Перед началом авторизации создайте:
code_verifier— случайное значение, которое приложение сохраняет до обмена кода на токен;code_challenge— SHA-256 отcode_verifier, передаваемый GitVerse;state— случайное значение для защиты OAuth-flow от CSRF.
Пример для Bash:
CODE_VERIFIER=$(openssl rand -base64 96 \
| tr -d '=+/' \
| cut -c1-64)
CODE_CHALLENGE=$(printf '%s' "$CODE_VERIFIER" \
| openssl dgst -sha256 -binary \
| openssl base64 -A \
| tr '+/' '-_' \
| tr -d '=')
STATE=$(openssl rand -hex 32)
printf 'CODE_VERIFIER=%s\n' "$CODE_VERIFIER"
printf 'CODE_CHALLENGE=%s\n' "$CODE_CHALLENGE"
printf 'STATE=%s\n' "$STATE"Сохраните CODE_VERIFIER и STATE до завершения авторизации.
3. Инициация авторизации
Перенаправьте пользователя на endpoint авторизации GitVerse:
https://gitverse.ru/signin/oauth/authorize
?client_id=ВАШ_CLIENT_ID
&redirect_uri=https://your-server.ru%2Fcallback
&response_type=code
&scope=read:user
&state=ВАШ_STATE
&code_challenge=ВАШ_CODE_CHALLENGE
&code_challenge_method=S256В реальном приложении все параметры необходимо сделать URL-encoded.
Tip
- в примере используется
scope=read:user;- список поддерживаемых scope см. в Областях доступа;
- подробнее о PKCE см. в FAQ и лучших практиках.
4. Подтверждение доступа
- Войдите в свой аккаунт GitVerse (если еще не вошли).
- На странице подтверждения вы увидите:
- название приложения: My First App;
- запрашиваемые права: Пользователь: Чтение (
read:user).
- Нажмите Авторизоваться.
5. Получение authorization code
После подтверждения GitVerse перенаправит пользователя на зарегистрированный redirect_uri:
https://your-server.ru/callback?code=gta_xxxxxx&state=ВАШ_STATEПриложение должно:
- Получить значения
codeиstateиз query-параметров callback. - Сравнить полученный
stateсо значением, сохраненным перед началом авторизации. - Прекратить авторизацию, если значения
stateне совпадают.
Warning
authorization codeявляется одноразовым и имеет ограниченный срок действия. Не сохраняйте его как постоянный credential.
При ручном тестировании значение code можно скопировать из адресной строки браузера.
6. Обмен кода на access token
Отправьте POST-запрос на token endpoint:
curl -X POST 'https://gitverse.ru/login/oauth/access_token' \
-H 'Content-Type: application/x-www-form-urlencoded' \
-d 'grant_type=authorization_code' \
-d 'code=gta_xxxxxx' \
-d 'redirect_uri=https://your-server.ru/callback' \
-d 'client_id=ВАШ_CLIENT_ID' \
-d 'client_secret=ВАШ_CLIENT_SECRET' \
-d 'code_verifier=ВАШ_CODE_VERIFIER'Значение redirect_uri должно соответствовать URI, использованному при получении authorization code.
Успешный ответ
{
"access_token": "eyJhbGciOiJSUzI1NiIs...",
"token_type": "bearer",
"expires_in": 3600,
"refresh_token": "eyUqbGciOiJSUzI7NiLm...",
"scope": "read:user"
}Tip
В ответе может содержаться
refresh_token, используемый для получения новогоaccess_token. Подробнее о сроках жизни, ротации и инвалидации токенов см. в Жизненном цикле токенов.
7. Использование access token
Теперь приложение может обращаться к API GitVerse в пределах предоставленных ему прав:
curl 'https://api.gitverse.ru/user' \
-H 'Authorization: Bearer eyJhbGciOiJSUzI1NiIs...' \
-H 'Accept: application/vnd.gitverse.object+json;version=latest'Пример ответа
{
"id": 123,
"login": "your_username"
}Public Client
Для Public Client client_secret не используется. Такой клиент выполняет Authorization Code Flow с PKCE и при обмене кода передает client_id и code_verifier, но не client_secret.
Подробнее см. в разделе Типы клиентов.
Следующие шаги
- Управление приложениями — создание, редактирование и удаление OAuth-приложений;
- Авторизация приложений OAuth 2.0 — подробное описание Authorization Code Flow с PKCE;
- Области доступа — управление правами приложения;
- Жизненный цикл токенов — access token, refresh token, ротация и инвалидация;
- Лучшие практики — рекомендации по безопасной реализации OAuth 2.0.