Понимание работы OAuth 2.1 для серверов MCP (Model Context Protocol): этапы обнаружения, авторизации и доступа

OAuth 2.1 — это официально утверждённый стандарт авторизации в спецификациях Model Context Protocol (MCP). Согласно официальной документации, серверы авторизации должны реализовывать OAuth 2.1 с надлежащими мерами безопасности как для конфиденциальных, так и для публичных клиентов.

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

Как работает авторизация

Процесс авторизации MCP разработан для обеспечения безопасного и контролируемого доступа к защищённым серверам. Он состоит из трёх основных этапов:

1. Этап обнаружения

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

2. Этап авторизации

Как только клиент понимает, как сервер обрабатывает авторизацию, он начинает процесс регистрации и авторизации.

Если поддерживается динамическая регистрация клиентов, клиент может автоматически зарегистрироваться на сервере авторизации без необходимости ручной настройки. На этом этапе клиент предоставляет основные данные, такие как его имя, тип, URL-адреса перенаправления и желаемые области. В ответ сервер авторизации выдаёт учётные данные клиента — обычно clientid и clientsecret, которые клиент будет использовать в последующих запросах. Этот процесс ускоряет подключение новых клиентов и делает его более масштабируемым, особенно в крупных или автоматизированных средах.

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

В потоке кода авторизации пользователь должен дать согласие. После одобрения сервер авторизации выдаёт токен доступа с соответствующими областями для использования клиентом.

3. Этап доступа

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

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

Спецификация авторизации MCP включает несколько важных улучшений безопасности, чтобы сделать процесс более безопасным и надёжным:

* Обязательное использование PKCE

Все клиенты MCP должны использовать PKCE (Proof Key for Code Exchange), как определено в OAuth 2.1. PKCE добавляет уровень защиты, создавая секретную пару «верификатор-вызов», гарантируя, что только исходный клиент, начавший запрос, может обменять код авторизации на токены. Это предотвращает атаки, такие как перехват или внедрение кода.

* Строгая проверка URI перенаправления

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

* Токены с ограниченным сроком действия

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

* Детальная модель областей

MCP OAuth 2.1 позволяет использовать детальные разрешения с помощью областей, чтобы клиенты получали доступ только к тому, что им нужно. Примеры включают:
* mcp:tools:weather — доступ только к погодным инструментам.
* mcp:resources:customer-data:read — доступ для чтения данных клиентов.
mcp:exec:workflows: — разрешение на запуск любого рабочего процесса.

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

Клиенты и серверы MCP могут поддерживать автоматическую регистрацию клиентов. Это позволяет новым клиентам получать свои учётные данные (например, идентификаторы клиентов) без ручной настройки, что ускоряет и упрощает подключение новых AI-агентов.

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

1. Какие основные этапы включает в себя процесс авторизации MCP?

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

2. Что такое PKCE и зачем оно используется в MCP OAuth 2.1?

Ответ: PKCE (Proof Key for Code Exchange) — это метод, который добавляет уровень защиты в процессе авторизации. Он создаёт секретную пару «верификатор-вызов», гарантируя, что только исходный клиент, начавший запрос, может обменять код авторизации на токены. Это предотвращает атаки, такие как перехват или внедрение кода.

3. Какие улучшения безопасности включены в спецификацию авторизации MCP?

Ответ: в спецификацию авторизации MCP включены следующие улучшения безопасности: обязательное использование PKCE, строгая проверка URI перенаправления, выдача токенов доступа с ограниченным сроком действия, детальная модель областей и динамическая регистрация клиентов.

4. Что такое детальная модель областей в MCP OAuth 2.1 и зачем она нужна?

Ответ: детальная модель областей в MCP OAuth 2.1 позволяет использовать детальные разрешения, чтобы клиенты получали доступ только к тому, что им нужно. Например, клиент может получить доступ только к погодным инструментам (mcp:tools:weather) или доступ для чтения данных клиентов (mcp:resources:customer-data:read). Это обеспечивает более точный контроль над доступом и повышает безопасность системы.

5. Что такое динамическая регистрация клиентов в контексте MCP OAuth 2.1?

Ответ: динамическая регистрация клиентов позволяет новым клиентам получать свои учётные данные (например, идентификаторы клиентов) без ручной настройки. Это ускоряет и упрощает подключение новых AI-агентов к системе MCP.

Источник