API / Auth / MCP

OAuth Discovery

Автоматическое обнаружение OAuth 2.0 endpoints через /.well-known/oauth-authorization-server (RFC 8414).

Что такое OAuth Discovery?

OAuth Discovery — механизм автоматического обнаружения OAuth 2.0 Authorization Server через JSON-документ по адресу /.well-known/oauth-authorization-server (RFC 8414) или /.well-known/openid-configuration (OIDC). Содержит все нужные endpoints, чтобы агент мог инициировать OAuth flow без ручной настройки.

{
  "issuer": "https://example.com",
  "authorization_endpoint": "https://example.com/oauth/authorize",
  "token_endpoint": "https://example.com/oauth/token",
  "jwks_uri": "https://example.com/.well-known/jwks.json",
  "scopes_supported": ["read", "write"],
  "response_types_supported": ["code"]
}

Зачем нужен OAuth Discovery?

AI-агентам, которым нужен авторизованный доступ к API, необходимо найти OAuth Authorization Server. Без discovery агент требует явной конфигурации от пользователя — это блокирует автономную работу.

С OAuth Discovery агент:

  1. Получает домен сервиса
  2. Запрашивает /.well-known/oauth-authorization-server (или /.well-known/openid-configuration)
  3. Читает authorization_endpoint и token_endpoint
  4. Инициирует OAuth flow без участия человека

Особенно важно для MCP-серверов: спецификация MCP требует OAuth Discovery для авторизованных серверов.

Как реализовать OAuth Discovery?

Большинство OAuth-провайдеров публикуют discovery автоматически:

ПровайдерURL
Auth0https://<tenant>.auth0.com/.well-known/openid-configuration
Keycloakhttps://<host>/realms/<realm>/.well-known/openid-configuration
Oktahttps://<tenant>.okta.com/.well-known/oauth-authorization-server

Если используете собственный OAuth-сервер, опубликуйте JSON по /.well-known/oauth-authorization-server. Обязательные поля по RFC 8414:

  • issuer — базовый URL вашего сервера
  • authorization_endpoint — URL для авторизации
  • token_endpoint — URL для получения токена
  • jwks_uri — URL с публичными ключами

Для защищённых ресурсов дополните OAuth Protected Resource Metadata (RFC 9728), указывающим на Authorization Server.

Как мы проверяем OAuth Discovery?

Сканер проверяет два пути в порядке приоритета:

  1. /.well-known/openid-configuration
  2. /.well-known/oauth-authorization-server

Для каждого пути:

  1. HTTP 200 — документ доступен
  2. Валидный JSON — тело парсится без ошибок
  3. Обязательные поля — присутствуют issuer, authorization_endpoint, token_endpoint, jwks_uri

pass — хотя бы один путь вернул HTTP 200 с корректным JSON и всеми четырьмя полями. fail — ни один путь не отвечает или отсутствуют обязательные поля.

Источники и спецификации