Бета · редакция 2026.10-beta1 · MCP 2026-07-28

Discovery авторизации

L23 · MCP 2026-07-28 · открытая бета · редакция 2026.10-beta1

Мне важно, чтобы клиент находил authorization server из проверяемых метаданных ресурса, а не угадывал домен по строке ошибки. Здесь работают несколько документов, и у каждого своя роль.

Предварительно: L22

Как я это использую

Protected Resource Metadata по RFC 9728 описывает защищённый ресурс и его authorization_servers. Далее client получает metadata выбранного AS по RFC 8414 или OIDC Discovery. WWW-Authenticate в ответе 401 помогает обнаружить resource metadata. Проверяйте HTTPS, точное соответствие issuer и правила построения well-known URL, особенно если issuer имеет путь.

Границы авторизации

Разбираем конкретный контракт

Это учебный fixture: поля с доменом .example и идентификаторы вымышлены. Если показан фрагмент, его нужно поместить в соответствующий envelope выбранного профиля.

{
  "resourceMetadata": {
    "resource": "https://tasks.example/mcp",
    "authorization_servers": [
      "https://auth.example"
    ]
  },
  "asMetadata": {
    "issuer": "https://auth.example",
    "authorization_endpoint": "https://auth.example/authorize",
    "token_endpoint": "https://auth.example/token",
    "code_challenge_methods_supported": [
      "S256"
    ]
  }
}

Лаборатория · L23

Измените условия, проверьте результат и разберите ошибку. Все адреса и данные учебные.

Что легко сломать

Discovery URL — потенциальная поверхность SSRF. Не разрешайте перенаправлять серверный fetch в loopback, private network или metadata endpoint облака. Огранивайте redirects, время, размер ответа и повторно проверяйте конечную цель. Лаборатория разбирает fixtures локально и ничего не скачивает.

Практика и самопроверка

Пройти 401 challenge, Protected Resource Metadata и metadata authorization server. Успех: endpoint найден по правильному документу.

Я советую сначала предсказать результат, затем изменить один параметр в лаборатории и объяснить разницу. Сохраните небольшой fixture с нормальным и ошибочным случаем для своего проекта. Тренажёр открыт без регистрации; для сохранения ответов на тесты и завершения урока войдите в аккаунт.

В конце страницы — три вопроса. После правильных ответов можно завершить урок; ошибка в следующей тренировке не стирает уже полученное подтверждение этой редакции теста.

На что я опирался

Профиль и ссылки проверены 15 октября 2026. Core, deprecated compatibility и extensions в этом курсе помечены отдельно. Примеры объясняют выбранные сценарии; для реализации сверяйте нормативные MUST/SHOULD и schema соответствующей версии.

Проверка знаний

Читайте свободно. Войдите, чтобы отвечать и сохранять прогресс.

Что описывает RFC 9728 metadata?

С чем сверять issuer?

Почему опасен произвольный discovery fetch?