Безопасность 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