<НА ГЛАВНУЮ

Безопасность MCP с OAuth 2.1: обнаружение, авторизация и доступ

'Краткий обзор того, как OAuth 2.1 обеспечивает безопасность MCP через обнаружение, регистрацию и управление токенами.'

Почему OAuth 2.1 в MCP

OAuth 2.1 является официально предписанным стандартом авторизации в спецификации Model Context Protocol. Он обеспечивает современный и стандартизированный подход к управлению доступом клиентов к защищенным MCP серверам. Спецификация требует, чтобы серверы авторизации реализовали OAuth 2.1 с соответствующими мерами безопасности для конфиденциальных и публичных клиентов.

Фаза обнаружения

Когда MCP клиент обращается к защищенному ресурсу, сервер возвращает статус 401 Unauthorized и включает заголовок WWW-Authenticate, указывающий на сервер авторизации. Клиент использует метаданные авторизационной службы для обнаружения поддерживаемых возможностей, эндпойнтов и требований. На этом этапе клиент узнает, поддерживается ли динамическая регистрация, какие OAuth потоки доступны и какие меры безопасности применяются.

Регистрация и авторизация

После обнаружения клиент приступает к регистрации и получению авторизации.

Динамическая регистрация клиентов

Если сервер авторизации поддерживает динамическую регистрацию, клиент может автоматически зарегистрироваться, отправив базовую информацию: имя клиента, тип, redirect URI и запрашиваемые области доступа. Сервер возвращает учетные данные клиента, обычно client_id и client_secret, что упрощает интеграцию и масштабирование в автоматизированных средах.

Выбор OAuth потока

  • Authorization Code flow: используется при действии от имени человека. Пользователь дает согласие, после чего сервер выдаёт код авторизации, который клиент меняет на токен доступа. Для защиты обмена кода требуется PKCE.
  • Client Credentials flow: используется для взаимодействия между машинами, когда пользователя нет. Клиент аутентифицируется на сервере авторизации и получает токен доступа с нужными правами.

Фаза доступа

С полученным токеном доступа клиент прикрепляет его к запросам к MCP серверу. Сервер валидирует токен, проверяет соответствие запрашиваемым областям (scopes) и только затем обрабатывает запрос. Все события доступа и решения по авторизации должны логироваться для аудита и контроля соответствия.

Ключевые улучшения безопасности в MCP OAuth 2.1

MCP дополняет OAuth 2.1 обязательными и рекомендуемыми мерами безопасности:

  • Обязательный PKCE

    Все MCP клиенты обязаны использовать PKCE. Эта схема создаёт пару verifier и challenge, что позволяет обменять код авторизации только тому клиенту, который изначально запросил его, предотвращая атаки перехвата кода.

  • Строгая валидация redirect URI

    Клиенты должны заранее регистрировать точные redirect URI. Сервер авторизации проверяет точное совпадение во время авторизации, что препятствует перенаправлению токенов на сторонние адреса.

  • Короткоживущие токены

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

  • Гранулярная модель областей доступа

    MCP поддерживает детальные scopes, чтобы клиент получал только необходимые права. Примеры областей:

    • mcp:tools:weather
    • mcp:resources:customer-data:read
    • mcp:exec:workflows:*
  • Динамическая регистрация клиентов

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

Практические заметки по внедрению

Реализация OAuth 2.1 для MCP серверов следует общим паттернам OAuth, но с обязательным применением перечисленных мер безопасности. В практических развертываниях стоит:

  • Публиковать корректную метадату discovery для автоматического обнаружения клиентами
  • Включать динамическую регистрацию по необходимости
  • Принудительно применять PKCE для обмена кодов авторизации
  • Строго валидировать redirect URI
  • Выдавать короткоживущие токены и продумывать стратегию refresh токенов
  • Логировать события авторизации и доступа для аудита

В спецификации MCP и сопутствующих материалах есть примеры и рекомендации. На практике один из подходов — создать простой сервис, например сервер анализа сентимента для финансовых данных, и использовать совместимый с OAuth 2.1 инструмент, такой как Scalekit, для обработки регистрации клиентов, выдачи и валидации токенов.

🇬🇧

Switch Language

Read this article in English

Switch to English