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

Почему 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 потока

Фаза доступа

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

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

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

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

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

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