Авторизация OAuth 2.0 и PKCE

Стандарт безопасной авторизации сторонних клиентских приложений и плагинов без передачи постоянных секретных ключей.

Если вы разрабатываете открытый десктопный редактор, плагин для IDE или мобильное приложение, требовать от пользователя ввод мастер-ключа небезопасно. Протокол OAuth 2.0 с механизмом Proof Key for Code Exchange (PKCE) позволяет вашему приложению получать временный ограниченный токен доступа через стандартный веб-диалог авторизации.

Последовательность авторизационного потока (OAuth Flow)

Клиентское приложение генерирует динамический код верификации (code_verifier) и направляет пользователя на страницу входа. После подтверждения шлюз возвращает одноразовый authorization_code, который обменивается на сессионный bearer-токен.

Ключевые технические возможности

  • Защита мобильных и SPA клиентов: Исключает утечку постоянных ключей из клиентских бандлов и декомпилированных приложений.
  • Гранулированные области видимости (Scopes): Ограничение прав токена только чтением моделей или отправкой запросов генерации.
  • Короткоживущие Access-токены: Автоматическая ротация токенов доступа с использованием refresh_token.
  • Соответствие RFC 7636: Полная реализация международного стандарта криптографической защиты открытых клиентов.

Пример интеграции в коде

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


import OpenAI from "openai";

// Инициализация стандартного SDK с базовым URL Api Router
const client = new OpenAI({
  baseURL: "https://api-router.velar.plus/v1",
  apiKey: process.env.API_ROUTER_KEY, // Ваш ключ от сервиса
});

async function run() {
  const response = await client.chat.completions.create({
    model: "anthropic/claude-sonnet", // Семейство модели без жесткой привязки к устаревающим номерам
    messages: [
      { role: "system", content: "Вы профессиональный инженер-архитектор." },
      { role: "user", content: "Как настроить надежную маршрутизацию запросов?" }
    ],
    temperature: 0.2,
  });

  console.log("Ответ модели:", response.choices[0].message.content);
}

run();
  

Связанные разделы документации

Для глубокого погружения в тему изучите следующие материалы: