[{"data":1,"prerenderedAt":100},["ShallowReactive",2],{"wiki-mcp-mcp-authorization-ru":3},{"meta":4,"html":8,"headings":9,"words":99},{"title":5,"description":6,"published":7,"updated":7,"sourceUpdated":7},"Авторизация в MCP","Авторизация в MCP - процедура на основе OAuth 2.1 для HTTP-серверов: bearer-токены, метаданные ресурса, регистрация клиента, права и проверка издателя.","2026-11-03","\u003Cp>\u003Cstrong>Авторизация в MCP\u003C/strong> - часть спецификации Model Context Protocol, которая определяет, как \u003Cspan class=\"wiki-term\" tabindex=\"0\" data-wiki-term=\"mcp-client\">MCP-клиент\u003C/span> получает токен доступа к защищённому \u003Cspan class=\"wiki-term\" tabindex=\"0\" data-wiki-term=\"mcp-server\">MCP-серверу\u003C/span> и передаёт его в каждом HTTP-запросе. Она построена на OAuth 2.1 и наборе связанных стандартов IETF. MCP-сервер выступает сервером ресурсов OAuth, а токены выдаёт отдельный сервер авторизации.\u003C/p>\n\u003Cp>Авторизация впервые появилась в спецификации 2025-03-26 и с тех пор менялась в каждой редакции. В статье описана текущая версия спецификации, \u003Cstrong>2026-07-28\u003C/strong>, и отмечено, что менялось в предыдущих. Базовые понятия протокола (хост, клиент, сервер, транспорты) описаны в статье \u003Ca href=\"/ru/wiki/mcp/what-is-mcp\" class=\"wiki-link wiki-link--article\">Что такое MCP\u003C/a>.\u003C/p>\n\u003Ch2 id=\"кратко\" class=\"wiki-heading\">Кратко\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"кратко\" aria-label=\"Скопировать ссылку на раздел\" data-copied-label=\"Ссылка на раздел скопирована\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h2>\n\u003Cdiv class=\"wiki-table wiki-table--cols-2\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Параметр\u003C/th>\n\u003Cth>Значение\u003C/th>\n\u003C/tr>\n\u003C/thead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>Тип\u003C/td>\n\u003Ctd>Авторизация на уровне транспорта, необязательная\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Область действия\u003C/td>\n\u003Ctd>Транспорты на основе HTTP; серверы на stdio берут учётные данные из окружения\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Основа\u003C/td>\n\u003Ctd>OAuth 2.1 (черновик IETF), выбранное подмножество возможностей\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Роли\u003C/td>\n\u003Ctd>MCP-сервер - сервер ресурсов, MCP-клиент - клиент OAuth, сервер авторизации\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Токен\u003C/td>\n\u003Ctd>Bearer-токен доступа в заголовке \u003Ccode>Authorization\u003C/code> каждого запроса\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Обнаружение\u003C/td>\n\u003Ctd>Protected Resource Metadata (RFC 9728); Authorization Server Metadata (RFC 8414) или OpenID Connect Discovery 1.0\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Регистрация клиента\u003C/td>\n\u003Ctd>Client ID Metadata Documents, предварительная регистрация, Dynamic Client Registration (устарела)\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Обязательная защита\u003C/td>\n\u003Ctd>PKCE с \u003Ccode>S256\u003C/code>, указатели ресурса (RFC 8707), проверка издателя (RFC 9207)\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Версия спецификации\u003C/td>\n\u003Ctd>2026-07-28\u003C/td>\n\u003C/tr>\n\u003C/tbody>\n\u003C/table>\u003C/div>\n\u003Ch2 id=\"какую-задачу-решает\" class=\"wiki-heading\">Какую задачу решает\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"какую-задачу-решает\" aria-label=\"Скопировать ссылку на раздел\" data-copied-label=\"Ссылка на раздел скопирована\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h2>\n\u003Cp>Удалённый MCP-сервер часто обслуживает многих пользователей, и ему нужно знать, кто отправил запрос и что этот пользователь разрешил. Токен в файле конфигурации выпускают вручную для каждого сервера и хранят в предсказуемом месте на диске.\u003C/p>\n\u003Cp>MCP-клиенты универсальны: хост может подключиться к серверу, с которым у него нет предварительных отношений. OAuth 2.0 (RFC 6749) исходит из обратного: клиент регистрируется до начала процедуры и узнаёт адреса эндпоинтов из документации сервиса.\u003C/p>\n\u003Cp>Спецификация решает это цепочкой стандартных документов. На запрос без токена сервер отвечает HTTP 401 со ссылкой на свои метаданные, в которых назван сервер авторизации. Клиент представляется адресом собственного документа метаданных, поэтому предварительная регистрация не нужна. Полученный токен привязан к одному MCP-серверу.\u003C/p>\n\u003Ch2 id=\"история\" class=\"wiki-heading\">История\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"история\" aria-label=\"Скопировать ссылку на раздел\" data-copied-label=\"Ссылка на раздел скопирована\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h2>\n\u003Cp>В таблице - как менялась авторизация от версии к версии спецификации.\u003C/p>\n\u003Cdiv class=\"wiki-table wiki-table--cols-2\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Дата\u003C/th>\n\u003Cth>Событие\u003C/th>\n\u003C/tr>\n\u003C/thead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>Ноябрь 2024\u003C/td>\n\u003Ctd>Спецификация 2024-11-05: авторизация не определена\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>26 марта 2025\u003C/td>\n\u003Ctd>Спецификация 2025-03-26: авторизация на основе OAuth 2.1, Authorization Server Metadata (RFC 8414) с путями по умолчанию \u003Ccode>/authorize\u003C/code>, \u003Ccode>/token\u003C/code>, \u003Ccode>/register\u003C/code>\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>18 июня 2025\u003C/td>\n\u003Ctd>Спецификация 2025-06-18: MCP-сервер отнесён к серверам ресурсов OAuth и публикует Protected Resource Metadata (RFC 9728). Клиенты обязаны передавать указатели ресурса (RFC 8707). Передача токена дальше запрещена; добавлена страница Security Best Practices\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>25 ноября 2025\u003C/td>\n\u003Ctd>Спецификация 2025-11-25: Client ID Metadata Documents рекомендованы, Dynamic Client Registration необязательна, OpenID Connect Discovery 1.0, права в \u003Ccode>WWW-Authenticate\u003C/code>\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>28 июля 2026\u003C/td>\n\u003Ctd>Спецификация 2026-07-28: проверка \u003Ccode>iss\u003C/code> в ответе авторизации (RFC 9207), привязка учётных данных к издателю, \u003Ccode>application_type\u003C/code> при Dynamic Client Registration, Dynamic Client Registration объявлена устаревшей\u003C/td>\n\u003C/tr>\n\u003C/tbody>\n\u003C/table>\u003C/div>\n\u003Ch2 id=\"роли\" class=\"wiki-heading\">Роли\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"роли\" aria-label=\"Скопировать ссылку на раздел\" data-copied-label=\"Ссылка на раздел скопирована\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h2>\n\u003Cp>Спецификация определяет трёх участников и агент пользователя:\u003C/p>\n\u003Cul>\n\u003Cli>\u003Cstrong>Сервер ресурсов\u003C/strong> (resource server) - защищённый MCP-сервер. Он принимает запросы с токенами доступа, проверяет их и отвечает.\u003C/li>\n\u003Cli>\u003Cstrong>Клиент OAuth\u003C/strong> - MCP-клиент. Он выполняет запросы от имени владельца ресурса, обычно пользователя хоста.\u003C/li>\n\u003Cli>\u003Cstrong>Сервер авторизации\u003C/strong> (authorization server) при необходимости взаимодействует с пользователем и выдаёт токены доступа для MCP-сервера. Он может размещаться вместе с MCP-сервером или отдельно; его реализацию спецификация не определяет.\u003C/li>\n\u003Cli>\u003Cstrong>Агент пользователя\u003C/strong> (user agent) - браузер, в котором пользователь входит в систему и даёт согласие.\u003C/li>\n\u003C/ul>\n\u003Ch2 id=\"когда-применяется-авторизация\" class=\"wiki-heading\">Когда применяется авторизация\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"когда-применяется-авторизация\" aria-label=\"Скопировать ссылку на раздел\" data-copied-label=\"Ссылка на раздел скопирована\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h2>\n\u003Cp>Авторизация необязательна. Если реализация её поддерживает, требования зависят от транспорта:\u003C/p>\n\u003Cul>\n\u003Cli>реализации на транспорте на основе HTTP следует соблюдать спецификацию авторизации;\u003C/li>\n\u003Cli>реализации на \u003Cspan class=\"wiki-term\" tabindex=\"0\" data-wiki-term=\"stdio\">stdio\u003C/span> не следует её соблюдать, она берёт учётные данные из окружения, например из переменных окружения, которые задал хост;\u003C/li>\n\u003Cli>реализация на другом транспорте обязана соблюдать принятые для него практики безопасности.\u003C/li>\n\u003C/ul>\n\u003Cp>Сами транспорты описаны в статье \u003Ca href=\"/ru/wiki/mcp/mcp-transports\" class=\"wiki-link wiki-link--article\">Транспорты MCP\u003C/a>.\u003C/p>\n\u003Ch2 id=\"полная-процедура\" class=\"wiki-heading\">Полная процедура\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"полная-процедура\" aria-label=\"Скопировать ссылку на раздел\" data-copied-label=\"Ссылка на раздел скопирована\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h2>\n\u003Cp>Схема показывает процедуру от первого запроса без токена до первого запроса с токеном. Идентификатор клиента получен одним из способов регистрации, описанных ниже.\u003C/p>\n\u003Cdiv class=\"wiki-code wiki-code--plain\">\u003Cpre>\u003Ccode>Browser              MCP client                   MCP server              Authorization server\n   |                      |                            |                            |\n   |                      |-- request without token --&gt;|                            |\n   |                      |&lt;- 401, WWW-Authenticate ---|                            |\n   |                      |-- GET resource metadata --&gt;|                            |\n   |                      |&lt;- authorization_servers ---|                            |\n   |                      |-- GET authorization server metadata -------------------&gt;|\n   |                      |&lt;- endpoints, PKCE, iss support -------------------------|\n   |                      |   record issuer, PKCE      |                            |\n   |&lt;- authorization URL -|                            |                            |\n   |-- code_challenge, resource, scope --------------------------------------------&gt;|\n   |                      |                            |                            | user signs in, consents\n   |&lt;- redirect: code, state, iss --------------------------------------------------|\n   |-- code, state, iss -&gt;|                            |                            |\n   |                      |   compare iss with issuer  |                            |\n   |                      |-- token request, code_verifier ------------------------&gt;|\n   |                      |&lt;- access token, refresh token --------------------------|\n   |                      |-- request + Bearer token -&gt;|                            |\n   |                      |&lt;- MCP response ------------|                            |\u003C/code>\u003C/pre>\u003C/div>\n\u003Ch2 id=\"обнаружение\" class=\"wiki-heading\">Обнаружение\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"обнаружение\" aria-label=\"Скопировать ссылку на раздел\" data-copied-label=\"Ссылка на раздел скопирована\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h2>\n\u003Ch3 id=\"метаданные-защищённого-ресурса\" class=\"wiki-heading\">Метаданные защищённого ресурса\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"метаданные-защищённого-ресурса\" aria-label=\"Скопировать ссылку на раздел\" data-copied-label=\"Ссылка на раздел скопирована\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h3>\n\u003Cp>MCP-сервер обязан реализовать OAuth 2.0 Protected Resource Metadata (RFC 9728). Его документ метаданных обязан содержать поле \u003Ccode>authorization_servers\u003C/code> хотя бы с одним сервером авторизации. Сервер делает документ доступным одним из двух способов: передаёт адрес в параметре \u003Ccode>resource_metadata\u003C/code> заголовка \u003Ccode>WWW-Authenticate\u003C/code> ответа 401 или размещает документ по well-known URI.\u003C/p>\n\u003Cp>Ответ на запрос без токена может выглядеть так:\u003C/p>\n\u003Cdiv class=\"wiki-code\" data-language=\"http\">\u003Cdiv class=\"wiki-code__header\">\u003Cspan class=\"wiki-code__language\">HTTP\u003C/span>\u003Cbutton type=\"button\" class=\"wiki-code__copy\" data-wiki-copy data-copied-label=\"Скопировано\">\u003Csvg class=\"wiki-code__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M216,28H88A12,12,0,0,0,76,40V76H40A12,12,0,0,0,28,88V216a12,12,0,0,0,12,12H168a12,12,0,0,0,12-12V180h36a12,12,0,0,0,12-12V40A12,12,0,0,0,216,28ZM156,204H52V100H156Zm48-48H180V88a12,12,0,0,0-12-12H100V52H204Z\"/>\u003C/svg>\u003Csvg class=\"wiki-code__icon wiki-code__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003Cspan class=\"wiki-code__label\">Копировать\u003C/span>\u003Cspan class=\"wiki-code__label wiki-code__label--done\">Скопировано\u003C/span>\u003C/button>\u003C/div>\u003Cpre>\u003Ccode>HTTP/1.1 401 Unauthorized\nWWW-Authenticate: Bearer resource_metadata=&quot;https://mcp.example.com/.well-known/oauth-protected-resource/mcp&quot;, scope=&quot;files:read&quot;\u003C/code>\u003C/pre>\u003C/div>\n\u003Cp>Если в заголовке нет \u003Ccode>resource_metadata\u003C/code>, клиент строит well-known URI и проверяет их по порядку. Для эндпоинта \u003Ccode>https://example.com/public/mcp\u003C/code> первый из них - \u003Ccode>https://example.com/.well-known/oauth-protected-resource/public/mcp\u003C/code>: путь вставляется после well-known префикса. Второй - корневой: \u003Ccode>https://example.com/.well-known/oauth-protected-resource\u003C/code>. Клиенты обязаны поддерживать оба способа обнаружения.\u003C/p>\n\u003Cp>Документ метаданных сервера из примера выше:\u003C/p>\n\u003Cdiv class=\"wiki-code\" data-language=\"json\">\u003Cdiv class=\"wiki-code__header\">\u003Cspan class=\"wiki-code__language\">JSON\u003C/span>\u003Cbutton type=\"button\" class=\"wiki-code__copy\" data-wiki-copy data-copied-label=\"Скопировано\">\u003Csvg class=\"wiki-code__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M216,28H88A12,12,0,0,0,76,40V76H40A12,12,0,0,0,28,88V216a12,12,0,0,0,12,12H168a12,12,0,0,0,12-12V180h36a12,12,0,0,0,12-12V40A12,12,0,0,0,216,28ZM156,204H52V100H156Zm48-48H180V88a12,12,0,0,0-12-12H100V52H204Z\"/>\u003C/svg>\u003Csvg class=\"wiki-code__icon wiki-code__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003Cspan class=\"wiki-code__label\">Копировать\u003C/span>\u003Cspan class=\"wiki-code__label wiki-code__label--done\">Скопировано\u003C/span>\u003C/button>\u003C/div>\u003Cpre>\u003Ccode>{\n  &quot;resource&quot;: &quot;https://mcp.example.com/mcp&quot;,\n  &quot;authorization_servers&quot;: [&quot;https://auth.example.com&quot;],\n  &quot;scopes_supported&quot;: [&quot;files:read&quot;, &quot;files:write&quot;],\n  &quot;bearer_methods_supported&quot;: [&quot;header&quot;],\n  &quot;resource_name&quot;: &quot;Example MCP Server&quot;\n}\u003C/code>\u003C/pre>\u003C/div>\n\u003Cp>По RFC 9728 значение \u003Ccode>resource\u003C/code> обязано совпадать с адресом, по которому клиент обратился к серверу; иначе клиент не должен использовать документ.\u003C/p>\n\u003Ch3 id=\"метаданные-сервера-авторизации\" class=\"wiki-heading\">Метаданные сервера авторизации\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"метаданные-сервера-авторизации\" aria-label=\"Скопировать ссылку на раздел\" data-copied-label=\"Ссылка на раздел скопирована\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h3>\n\u003Cp>Сервер авторизации обязан поддерживать хотя бы один из двух способов обнаружения: OAuth 2.0 Authorization Server Metadata (RFC 8414) или OpenID Connect Discovery 1.0. Клиенты обязаны поддерживать оба и проверять несколько well-known адресов в установленном порядке.\u003C/p>\n\u003Cdiv class=\"wiki-table wiki-table--cols-2\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Издатель\u003C/th>\n\u003Cth>Адреса в порядке приоритета\u003C/th>\n\u003C/tr>\n\u003C/thead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>С путём, \u003Ccode>https://auth.example.com/tenant1\u003C/code>\u003C/td>\n\u003Ctd>\u003Ccode>/.well-known/oauth-authorization-server/tenant1\u003C/code>, \u003Ccode>/.well-known/openid-configuration/tenant1\u003C/code>, \u003Ccode>/tenant1/.well-known/openid-configuration\u003C/code>\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Без пути, \u003Ccode>https://auth.example.com\u003C/code>\u003C/td>\n\u003Ctd>\u003Ccode>/.well-known/oauth-authorization-server\u003C/code>, \u003Ccode>/.well-known/openid-configuration\u003C/code>\u003C/td>\n\u003C/tr>\n\u003C/tbody>\n\u003C/table>\u003C/div>\n\u003Cp>Значение \u003Ccode>issuer\u003C/code> в полученном документе обязано совпадать с идентификатором издателя, из которого построен адрес. Документ с хоста злоумышленника, где указан другой издатель, отклоняется.\u003C/p>\n\u003Cp>Сокращённый пример метаданных сервера авторизации с полями, важными для MCP:\u003C/p>\n\u003Cdiv class=\"wiki-code\" data-language=\"json\">\u003Cdiv class=\"wiki-code__header\">\u003Cspan class=\"wiki-code__language\">JSON\u003C/span>\u003Cbutton type=\"button\" class=\"wiki-code__copy\" data-wiki-copy data-copied-label=\"Скопировано\">\u003Csvg class=\"wiki-code__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M216,28H88A12,12,0,0,0,76,40V76H40A12,12,0,0,0,28,88V216a12,12,0,0,0,12,12H168a12,12,0,0,0,12-12V180h36a12,12,0,0,0,12-12V40A12,12,0,0,0,216,28ZM156,204H52V100H156Zm48-48H180V88a12,12,0,0,0-12-12H100V52H204Z\"/>\u003C/svg>\u003Csvg class=\"wiki-code__icon wiki-code__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003Cspan class=\"wiki-code__label\">Копировать\u003C/span>\u003Cspan class=\"wiki-code__label wiki-code__label--done\">Скопировано\u003C/span>\u003C/button>\u003C/div>\u003Cpre>\u003Ccode>{\n  &quot;issuer&quot;: &quot;https://auth.example.com&quot;,\n  &quot;authorization_endpoint&quot;: &quot;https://auth.example.com/authorize&quot;,\n  &quot;token_endpoint&quot;: &quot;https://auth.example.com/token&quot;,\n  &quot;response_types_supported&quot;: [&quot;code&quot;],\n  &quot;grant_types_supported&quot;: [&quot;authorization_code&quot;, &quot;refresh_token&quot;],\n  &quot;code_challenge_methods_supported&quot;: [&quot;S256&quot;],\n  &quot;scopes_supported&quot;: [&quot;files:read&quot;, &quot;files:write&quot;, &quot;offline_access&quot;],\n  &quot;client_id_metadata_document_supported&quot;: true,\n  &quot;authorization_response_iss_parameter_supported&quot;: true\n}\u003C/code>\u003C/pre>\u003C/div>\n\u003Ch2 id=\"регистрация-клиента\" class=\"wiki-heading\">Регистрация клиента\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"регистрация-клиента\" aria-label=\"Скопировать ссылку на раздел\" data-copied-label=\"Ссылка на раздел скопирована\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h2>\n\u003Cp>До начала авторизации клиент обязан получить идентификатор клиента (client ID). Спецификация определяет три способа. Клиенту, который поддерживает их все, следует применять их в таком порядке:\u003C/p>\n\u003Col>\n\u003Cli>данные предварительной регистрации для этого сервера, если они у клиента есть;\u003C/li>\n\u003Cli>Client ID Metadata Document, если сервер авторизации объявляет \u003Ccode>client_id_metadata_document_supported\u003C/code>;\u003C/li>\n\u003Cli>Dynamic Client Registration, если сервер авторизации публикует \u003Ccode>registration_endpoint\u003C/code>;\u003C/li>\n\u003Cli>запрос данных клиента у пользователя.\u003C/li>\n\u003C/ol>\n\u003Ch3 id=\"client-id-metadata-documents\" class=\"wiki-heading\">Client ID Metadata Documents\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"client-id-metadata-documents\" aria-label=\"Скопировать ссылку на раздел\" data-copied-label=\"Ссылка на раздел скопирована\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h3>\n\u003Cp>При \u003Cstrong>Client ID Metadata Documents\u003C/strong> идентификатор клиента - HTTPS-адрес, который ведёт на JSON-документ с метаданными клиента. Адрес обязан использовать схему \u003Ccode>https\u003C/code> и содержать путь. Документ обязан содержать как минимум \u003Ccode>client_id\u003C/code>, \u003Ccode>client_name\u003C/code> и \u003Ccode>redirect_uris\u003C/code>, а \u003Ccode>client_id\u003C/code> обязан в точности совпадать с адресом документа.\u003C/p>\n\u003Cdiv class=\"wiki-code\" data-language=\"json\">\u003Cdiv class=\"wiki-code__header\">\u003Cspan class=\"wiki-code__language\">JSON\u003C/span>\u003Cbutton type=\"button\" class=\"wiki-code__copy\" data-wiki-copy data-copied-label=\"Скопировано\">\u003Csvg class=\"wiki-code__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M216,28H88A12,12,0,0,0,76,40V76H40A12,12,0,0,0,28,88V216a12,12,0,0,0,12,12H168a12,12,0,0,0,12-12V180h36a12,12,0,0,0,12-12V40A12,12,0,0,0,216,28ZM156,204H52V100H156Zm48-48H180V88a12,12,0,0,0-12-12H100V52H204Z\"/>\u003C/svg>\u003Csvg class=\"wiki-code__icon wiki-code__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003Cspan class=\"wiki-code__label\">Копировать\u003C/span>\u003Cspan class=\"wiki-code__label wiki-code__label--done\">Скопировано\u003C/span>\u003C/button>\u003C/div>\u003Cpre>\u003Ccode>{\n  &quot;client_id&quot;: &quot;https://app.example.com/oauth/client-metadata.json&quot;,\n  &quot;client_name&quot;: &quot;Example MCP Client&quot;,\n  &quot;client_uri&quot;: &quot;https://app.example.com&quot;,\n  &quot;redirect_uris&quot;: [&quot;http://127.0.0.1:3000/callback&quot;],\n  &quot;grant_types&quot;: [&quot;authorization_code&quot;, &quot;refresh_token&quot;],\n  &quot;response_types&quot;: [&quot;code&quot;],\n  &quot;token_endpoint_auth_method&quot;: &quot;none&quot;\n}\u003C/code>\u003C/pre>\u003C/div>\n\u003Cp>Получив идентификатор клиента в виде адреса, сервер авторизации загружает документ, проверяет \u003Ccode>client_id\u003C/code> и адрес перенаправления из запроса и кеширует документ по заголовкам HTTP-кеширования. Способ основан на черновике IETF.\u003C/p>\n\u003Ch3 id=\"предварительная-регистрация\" class=\"wiki-heading\">Предварительная регистрация\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"предварительная-регистрация\" aria-label=\"Скопировать ссылку на раздел\" data-copied-label=\"Ссылка на раздел скопирована\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h3>\n\u003Cp>Клиентам следует поддерживать статические учётные данные клиента: идентификатор, встроенный в клиент для конкретного сервера авторизации, или форму, в которую пользователь вводит идентификатор клиента, зарегистрированный им самим.\u003C/p>\n\u003Ch3 id=\"dynamic-client-registration\" class=\"wiki-heading\">Dynamic Client Registration\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"dynamic-client-registration\" aria-label=\"Скопировать ссылку на раздел\" data-copied-label=\"Ссылка на раздел скопирована\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h3>\n\u003Cp>Динамическая регистрация клиентов (Dynamic Client Registration, RFC 7591) позволяет клиенту получить идентификатор запросом к \u003Ccode>registration_endpoint\u003C/code> сервера авторизации, без участия пользователя. С 2026-07-28 она устарела и сохранена для совместимости с серверами авторизации, которые не поддерживают Client ID Metadata Documents. Клиент, который её использует, обязан указать \u003Ccode>application_type\u003C/code>: \u003Ccode>native\u003C/code> для настольных, CLI- и локальных веб-приложений, \u003Ccode>web\u003C/code> для удалённых веб-приложений.\u003C/p>\n\u003Ch3 id=\"привязка-учётных-данных-к-серверу-авторизации\" class=\"wiki-heading\">Привязка учётных данных к серверу авторизации\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"привязка-учётных-данных-к-серверу-авторизации\" aria-label=\"Скопировать ссылку на раздел\" data-copied-label=\"Ссылка на раздел скопирована\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h3>\n\u003Cp>Учётные данные предварительной регистрации и данные, сохранённые после Dynamic Client Registration, принадлежат выдавшему их серверу авторизации. Клиент обязан хранить их с ключом \u003Ccode>issuer\u003C/code> этого сервера. Если метаданные защищённого ресурса начинают указывать другой сервер авторизации, клиент не должен повторно использовать старые учётные данные и обязан зарегистрироваться заново. Идентификаторы на основе Client ID Metadata Documents переносимы: сервер авторизации разрешает адрес по запросу, поэтому при смене сервера новая регистрация не нужна.\u003C/p>\n\u003Ch2 id=\"запрос-авторизации-и-токен\" class=\"wiki-heading\">Запрос авторизации и токен\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"запрос-авторизации-и-токен\" aria-label=\"Скопировать ссылку на раздел\" data-copied-label=\"Ссылка на раздел скопирована\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h2>\n\u003Ch3 id=\"pkce\" class=\"wiki-heading\">PKCE\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"pkce\" aria-label=\"Скопировать ссылку на раздел\" data-copied-label=\"Ссылка на раздел скопирована\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h3>\n\u003Cp>\u003Cstrong>PKCE\u003C/strong> (Proof Key for Code Exchange, RFC 7636) защищает код авторизации от перехвата. Перед запросом клиент создаёт случайный \u003Ccode>code_verifier\u003C/code> и передаёт в запросе авторизации его хеш SHA-256 - \u003Ccode>code_challenge\u003C/code>. В запросе токена клиент передаёт сам \u003Ccode>code_verifier\u003C/code>, поэтому обменять код может только клиент, который начал процедуру.\u003C/p>\n\u003Cp>MCP-клиенты обязаны реализовать PKCE и использовать метод \u003Ccode>S256\u003C/code>, если это технически возможно. OAuth не определяет, как узнать о поддержке PKCE, поэтому клиент проверяет \u003Ccode>code_challenge_methods_supported\u003C/code> в метаданных сервера авторизации. Если поля нет, клиент обязан прекратить процедуру. Сервер авторизации с OpenID Connect Discovery обязан включать это поле для совместимости с MCP.\u003C/p>\n\u003Ch3 id=\"указатели-ресурса\" class=\"wiki-heading\">Указатели ресурса\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"указатели-ресурса\" aria-label=\"Скопировать ссылку на раздел\" data-copied-label=\"Ссылка на раздел скопирована\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h3>\n\u003Cp>\u003Cstrong>Указатель ресурса\u003C/strong> (resource indicator, RFC 8707) - параметр \u003Ccode>resource\u003C/code>, который называет сервер, для которого запрашивается токен. MCP-клиенты обязаны передавать его и в запросе авторизации, и в запросе токена, даже если сервер авторизации его не поддерживает. Значение - канонический URI MCP-сервера: абсолютный URI со схемой и без фрагмента, например \u003Ccode>https://mcp.example.com/mcp\u003C/code> или \u003Ccode>https://mcp.example.com\u003C/code>. Рекомендуется форма без завершающей косой черты.\u003C/p>\n\u003Cp>Запрос авторизации со всеми обязательными параметрами:\u003C/p>\n\u003Cdiv class=\"wiki-code\" data-language=\"http\">\u003Cdiv class=\"wiki-code__header\">\u003Cspan class=\"wiki-code__language\">HTTP\u003C/span>\u003Cbutton type=\"button\" class=\"wiki-code__copy\" data-wiki-copy data-copied-label=\"Скопировано\">\u003Csvg class=\"wiki-code__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M216,28H88A12,12,0,0,0,76,40V76H40A12,12,0,0,0,28,88V216a12,12,0,0,0,12,12H168a12,12,0,0,0,12-12V180h36a12,12,0,0,0,12-12V40A12,12,0,0,0,216,28ZM156,204H52V100H156Zm48-48H180V88a12,12,0,0,0-12-12H100V52H204Z\"/>\u003C/svg>\u003Csvg class=\"wiki-code__icon wiki-code__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003Cspan class=\"wiki-code__label\">Копировать\u003C/span>\u003Cspan class=\"wiki-code__label wiki-code__label--done\">Скопировано\u003C/span>\u003C/button>\u003C/div>\u003Cpre>\u003Ccode>GET /authorize?response_type=code&amp;client_id=https%3A%2F%2Fapp.example.com%2Foauth%2Fclient-metadata.json&amp;redirect_uri=http%3A%2F%2F127.0.0.1%3A3000%2Fcallback&amp;scope=files%3Aread&amp;state=af0ifjsldkj&amp;code_challenge=E9Melhoa2OwvFrEMTJguCHaoeK1t8URWbuGJSstw-cM&amp;code_challenge_method=S256&amp;resource=https%3A%2F%2Fmcp.example.com%2Fmcp HTTP/1.1\nHost: auth.example.com\u003C/code>\u003C/pre>\u003C/div>\n\u003Ch3 id=\"проверка-издателя\" class=\"wiki-heading\">Проверка издателя\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"проверка-издателя\" aria-label=\"Скопировать ссылку на раздел\" data-copied-label=\"Ссылка на раздел скопирована\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h3>\n\u003Cp>При \u003Cstrong>атаке mix-up\u003C/strong> вредоносный сервер авторизации пытается заставить клиента передать ему код или токен, выданный другим, честным сервером (RFC 9207). PKCE от этого не защищает: клиент отправил бы свой \u003Ccode>code_verifier\u003C/code> на эндпоинт токенов злоумышленника.\u003C/p>\n\u003Cp>Перед открытием браузера клиент обязан записать \u003Ccode>issuer\u003C/code> из проверенных метаданных вместе с верификатором PKCE и \u003Ccode>state\u003C/code>. Серверам авторизации следует добавлять параметр \u003Ccode>iss\u003C/code> в ответы авторизации и объявлять это полем \u003Ccode>authorization_response_iss_parameter_supported\u003C/code>. Клиент проверяет ответ до того, как отправит код на какой-либо эндпоинт токенов:\u003C/p>\n\u003Cdiv class=\"wiki-table wiki-table--cols-3\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>\u003Ccode>authorization_response_iss_parameter_supported\u003C/code>\u003C/th>\n\u003Cth>\u003Ccode>iss\u003C/code> в ответе\u003C/th>\n\u003Cth>Действие клиента\u003C/th>\n\u003C/tr>\n\u003C/thead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>\u003Ccode>true\u003C/code>\u003C/td>\n\u003Ctd>есть\u003C/td>\n\u003Ctd>Сравнить с записанным издателем\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>true\u003C/code>\u003C/td>\n\u003Ctd>нет\u003C/td>\n\u003Ctd>Отклонить ответ\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>false\u003C/code> или нет поля\u003C/td>\n\u003Ctd>есть\u003C/td>\n\u003Ctd>Сравнить с записанным издателем\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>false\u003C/code> или нет поля\u003C/td>\n\u003Ctd>нет\u003C/td>\n\u003Ctd>Продолжить\u003C/td>\n\u003C/tr>\n\u003C/tbody>\n\u003C/table>\u003C/div>\n\u003Cp>Сравнение - простое строковое, без какой-либо нормализации. Оно распространяется и на ответы с ошибкой: при несовпадении клиент не показывает \u003Ccode>error\u003C/code>, \u003Ccode>error_description\u003C/code> и \u003Ccode>error_uri\u003C/code>.\u003C/p>\n\u003Cp>Перенаправление, которое проходит проверку, и следующий за ним запрос токена:\u003C/p>\n\u003Cdiv class=\"wiki-code\" data-language=\"http\">\u003Cdiv class=\"wiki-code__header\">\u003Cspan class=\"wiki-code__language\">HTTP\u003C/span>\u003Cbutton type=\"button\" class=\"wiki-code__copy\" data-wiki-copy data-copied-label=\"Скопировано\">\u003Csvg class=\"wiki-code__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M216,28H88A12,12,0,0,0,76,40V76H40A12,12,0,0,0,28,88V216a12,12,0,0,0,12,12H168a12,12,0,0,0,12-12V180h36a12,12,0,0,0,12-12V40A12,12,0,0,0,216,28ZM156,204H52V100H156Zm48-48H180V88a12,12,0,0,0-12-12H100V52H204Z\"/>\u003C/svg>\u003Csvg class=\"wiki-code__icon wiki-code__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003Cspan class=\"wiki-code__label\">Копировать\u003C/span>\u003Cspan class=\"wiki-code__label wiki-code__label--done\">Скопировано\u003C/span>\u003C/button>\u003C/div>\u003Cpre>\u003Ccode>HTTP/1.1 302 Found\nLocation: http://127.0.0.1:3000/callback?code=SplxlOBeZQQYbYS6WxSbIA&amp;state=af0ifjsldkj&amp;iss=https%3A%2F%2Fauth.example.com\u003C/code>\u003C/pre>\u003C/div>\n\u003Cdiv class=\"wiki-code\" data-language=\"http\">\u003Cdiv class=\"wiki-code__header\">\u003Cspan class=\"wiki-code__language\">HTTP\u003C/span>\u003Cbutton type=\"button\" class=\"wiki-code__copy\" data-wiki-copy data-copied-label=\"Скопировано\">\u003Csvg class=\"wiki-code__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M216,28H88A12,12,0,0,0,76,40V76H40A12,12,0,0,0,28,88V216a12,12,0,0,0,12,12H168a12,12,0,0,0,12-12V180h36a12,12,0,0,0,12-12V40A12,12,0,0,0,216,28ZM156,204H52V100H156Zm48-48H180V88a12,12,0,0,0-12-12H100V52H204Z\"/>\u003C/svg>\u003Csvg class=\"wiki-code__icon wiki-code__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003Cspan class=\"wiki-code__label\">Копировать\u003C/span>\u003Cspan class=\"wiki-code__label wiki-code__label--done\">Скопировано\u003C/span>\u003C/button>\u003C/div>\u003Cpre>\u003Ccode>POST /token HTTP/1.1\nHost: auth.example.com\nContent-Type: application/x-www-form-urlencoded\n\ngrant_type=authorization_code&amp;code=SplxlOBeZQQYbYS6WxSbIA&amp;redirect_uri=http%3A%2F%2F127.0.0.1%3A3000%2Fcallback&amp;client_id=https%3A%2F%2Fapp.example.com%2Foauth%2Fclient-metadata.json&amp;code_verifier=dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk&amp;resource=https%3A%2F%2Fmcp.example.com%2Fmcp\u003C/code>\u003C/pre>\u003C/div>\n\u003Ch2 id=\"использование-токена-доступа\" class=\"wiki-heading\">Использование токена доступа\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"использование-токена-доступа\" aria-label=\"Скопировать ссылку на раздел\" data-copied-label=\"Ссылка на раздел скопирована\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h2>\n\u003Cp>Клиент передаёт токен в заголовке \u003Ccode>Authorization\u003C/code> со схемой \u003Ccode>Bearer\u003C/code>. Заголовок обязан быть в каждом HTTP-запросе к серверу, а не только в первом. Передавать токен в строке запроса URI нельзя. С версии 2026-07-28 нет и сессии протокола: каждый запрос несёт собственную авторизацию.\u003C/p>\n\u003Cp>Запрос вызова инструмента с токеном:\u003C/p>\n\u003Cdiv class=\"wiki-code\" data-language=\"http\">\u003Cdiv class=\"wiki-code__header\">\u003Cspan class=\"wiki-code__language\">HTTP\u003C/span>\u003Cbutton type=\"button\" class=\"wiki-code__copy\" data-wiki-copy data-copied-label=\"Скопировано\">\u003Csvg class=\"wiki-code__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M216,28H88A12,12,0,0,0,76,40V76H40A12,12,0,0,0,28,88V216a12,12,0,0,0,12,12H168a12,12,0,0,0,12-12V180h36a12,12,0,0,0,12-12V40A12,12,0,0,0,216,28ZM156,204H52V100H156Zm48-48H180V88a12,12,0,0,0-12-12H100V52H204Z\"/>\u003C/svg>\u003Csvg class=\"wiki-code__icon wiki-code__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003Cspan class=\"wiki-code__label\">Копировать\u003C/span>\u003Cspan class=\"wiki-code__label wiki-code__label--done\">Скопировано\u003C/span>\u003C/button>\u003C/div>\u003Cpre>\u003Ccode>POST /mcp HTTP/1.1\nHost: mcp.example.com\nAuthorization: Bearer eyJhbGciOiJIUzI1NiIs...\nContent-Type: application/json\nAccept: application/json, text/event-stream\nMCP-Protocol-Version: 2026-07-28\nMcp-Method: tools/call\nMcp-Name: read_file\n\n{&quot;jsonrpc&quot;: &quot;2.0&quot;, &quot;id&quot;: 7, &quot;method&quot;: &quot;tools/call&quot;, &quot;params&quot;: {&quot;name&quot;: &quot;read_file&quot;, &quot;arguments&quot;: {&quot;path&quot;: &quot;report.md&quot;}, &quot;_meta&quot;: {&quot;io.modelcontextprotocol/protocolVersion&quot;: &quot;2026-07-28&quot;, &quot;io.modelcontextprotocol/clientCapabilities&quot;: {}}}}\u003C/code>\u003C/pre>\u003C/div>\n\u003Cp>Сервер проверяет токен так, как требует OAuth 2.1, и убеждается, что токен выдан для него как для аудитории (audience). На недействительный или просроченный токен сервер отвечает HTTP 401. Сервер не должен принимать и передавать дальше токены, выданные для других ресурсов. Клиент не должен отправлять серверу токены, выданные другими серверами авторизации.\u003C/p>\n\u003Cp>Когда MCP-сервер вызывает другой API, он выступает отдельным клиентом OAuth этого API с отдельным токеном. Пересылка токена клиента (\u003Cspan class=\"wiki-term\" tabindex=\"0\" data-wiki-term=\"token-passthrough\">передача токена дальше\u003C/span>, token passthrough) запрещена.\u003C/p>\n\u003Ch2 id=\"ошибки-и-права\" class=\"wiki-heading\">Ошибки и права\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"ошибки-и-права\" aria-label=\"Скопировать ссылку на раздел\" data-copied-label=\"Ссылка на раздел скопирована\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h2>\n\u003Ch3 id=\"коды-ответа\" class=\"wiki-heading\">Коды ответа\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"коды-ответа\" aria-label=\"Скопировать ссылку на раздел\" data-copied-label=\"Ссылка на раздел скопирована\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h3>\n\u003Cp>В таблице - коды HTTP, которые сервер возвращает при ошибках авторизации.\u003C/p>\n\u003Cdiv class=\"wiki-table wiki-table--cols-3\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Код\u003C/th>\n\u003Cth>Значение\u003C/th>\n\u003Cth>Когда используется\u003C/th>\n\u003C/tr>\n\u003C/thead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>401\u003C/td>\n\u003Ctd>Unauthorized\u003C/td>\n\u003Ctd>Нужна авторизация или токен недействителен\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>403\u003C/td>\n\u003Ctd>Forbidden\u003C/td>\n\u003Ctd>Неверные права или недостаточно полномочий\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>400\u003C/td>\n\u003Ctd>Bad Request\u003C/td>\n\u003Ctd>Некорректный запрос авторизации\u003C/td>\n\u003C/tr>\n\u003C/tbody>\n\u003C/table>\u003C/div>\n\u003Ch3 id=\"выбор-прав\" class=\"wiki-heading\">Выбор прав\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"выбор-прав\" aria-label=\"Скопировать ссылку на раздел\" data-copied-label=\"Ссылка на раздел скопирована\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h3>\n\u003Cp>\u003Cstrong>Право\u003C/strong> (scope) - именованное разрешение, которое несёт токен, например \u003Ccode>files:read\u003C/code>. Серверу следует указывать в заголовке \u003Ccode>WWW-Authenticate\u003C/code> ответа 401 параметр \u003Ccode>scope\u003C/code> с правами, нужными для ресурса. При первой авторизации клиент берёт права из этого параметра. Если параметра нет, клиент запрашивает все права из \u003Ccode>scopes_supported\u003C/code> в метаданных защищённого ресурса или не передаёт \u003Ccode>scope\u003C/code>, если нет и этого поля.\u003C/p>\n\u003Cp>Права из запроса сервера клиент считает определяющими для текущей операции, как бы они ни соотносились со \u003Ccode>scopes_supported\u003C/code>. \u003Ccode>scopes_supported\u003C/code> должно содержать минимальный набор для базовой работы. Серверам не следует указывать там и в запросах прав \u003Ccode>offline_access\u003C/code>: токены обновления не являются требованием ресурса.\u003C/p>\n\u003Ch3 id=\"дозапрос-прав\" class=\"wiki-heading\">Дозапрос прав\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"дозапрос-прав\" aria-label=\"Скопировать ссылку на раздел\" data-copied-label=\"Ссылка на раздел скопирована\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h3>\n\u003Cp>\u003Cstrong>Дозапрос прав\u003C/strong> (step-up authorization) - запрос нового токена с расширенными правами, когда текущего токена для операции недостаточно. Получив такой токен, серверу следует ответить HTTP 403 с \u003Ccode>error=&quot;insufficient_scope&quot;\u003C/code>, нужными правами и \u003Ccode>resource_metadata\u003C/code>:\u003C/p>\n\u003Cdiv class=\"wiki-code\" data-language=\"http\">\u003Cdiv class=\"wiki-code__header\">\u003Cspan class=\"wiki-code__language\">HTTP\u003C/span>\u003Cbutton type=\"button\" class=\"wiki-code__copy\" data-wiki-copy data-copied-label=\"Скопировано\">\u003Csvg class=\"wiki-code__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M216,28H88A12,12,0,0,0,76,40V76H40A12,12,0,0,0,28,88V216a12,12,0,0,0,12,12H168a12,12,0,0,0,12-12V180h36a12,12,0,0,0,12-12V40A12,12,0,0,0,216,28ZM156,204H52V100H156Zm48-48H180V88a12,12,0,0,0-12-12H100V52H204Z\"/>\u003C/svg>\u003Csvg class=\"wiki-code__icon wiki-code__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003Cspan class=\"wiki-code__label\">Копировать\u003C/span>\u003Cspan class=\"wiki-code__label wiki-code__label--done\">Скопировано\u003C/span>\u003C/button>\u003C/div>\u003Cpre>\u003Ccode>HTTP/1.1 403 Forbidden\nWWW-Authenticate: Bearer error=&quot;insufficient_scope&quot;, scope=&quot;files:write&quot;, resource_metadata=&quot;https://mcp.example.com/.well-known/oauth-protected-resource/mcp&quot;, error_description=&quot;File write permission required for this operation&quot;\u003C/code>\u003C/pre>\u003C/div>\n\u003Cp>Клиент вычисляет объединение прав, запрошенных ранее, и прав из ответа, заново проходит авторизацию и повторяет исходный запрос. Объединение сохраняет права, которые нужны другим операциям. Серверу следует называть все права, нужные операции, в одном ответе. Клиентам следует ограничивать число повторов; клиенты, действующие от своего имени (\u003Ccode>client_credentials\u003C/code>), могут вместо этого прервать запрос. Серверы обязаны учитывать иерархию прав, в которой более широкое право включает более узкое.\u003C/p>\n\u003Ch2 id=\"токены-обновления\" class=\"wiki-heading\">Токены обновления\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"токены-обновления\" aria-label=\"Скопировать ссылку на раздел\" data-copied-label=\"Ссылка на раздел скопирована\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h2>\n\u003Cp>Токен обновления (refresh token) позволяет клиенту получить новый токен доступа без участия пользователя. Клиент, которому нужны токены обновления, обязан хранить их в тайне, ему следует указать \u003Ccode>refresh_token\u003C/code> в \u003Ccode>grant_types\u003C/code> своих метаданных, и он может запросить \u003Ccode>offline_access\u003C/code>, если сервер авторизации его перечисляет. Клиент не должен рассчитывать, что токен обновления будет выдан.\u003C/p>\n\u003Cp>Серверам авторизации следует выдавать короткоживущие токены доступа, а для публичных клиентов они обязаны обновлять токен обновления при каждом использовании.\u003C/p>\n\u003Ch2 id=\"требования-безопасности\" class=\"wiki-heading\">Требования безопасности\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"требования-безопасности\" aria-label=\"Скопировать ссылку на раздел\" data-copied-label=\"Ссылка на раздел скопирована\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h2>\n\u003Cp>Security Considerations спецификации охватывают такие атаки:\u003C/p>\n\u003Cul>\n\u003Cli>\u003Cstrong>кража токенов\u003C/strong>: токены хранятся защищённо;\u003C/li>\n\u003Cli>\u003Cstrong>защита передачи\u003C/strong>: эндпоинты сервера авторизации работают по HTTPS, адреса перенаправления - \u003Ccode>localhost\u003C/code> или HTTPS;\u003C/li>\n\u003Cli>\u003Cstrong>открытое перенаправление\u003C/strong>: адреса перенаправления регистрируются и сравниваются точно, клиент проверяет \u003Ccode>state\u003C/code>;\u003C/li>\n\u003Cli>\u003Cstrong>атаки mix-up\u003C/strong>: клиент проверяет \u003Ccode>iss\u003C/code>;\u003C/li>\n\u003Cli>\u003Cstrong>confused deputy\u003C/strong>: \u003Cspan class=\"wiki-term\" tabindex=\"0\" data-wiki-term=\"mcp-proxy-server\">MCP-прокси-сервер\u003C/span> получает согласие пользователя для каждого клиента;\u003C/li>\n\u003Cli>\u003Cstrong>риски Client ID Metadata Documents\u003C/strong>: подделка запросов при загрузке документов, подмена адресов перенаправления на \u003Ccode>localhost\u003C/code>.\u003C/li>\n\u003C/ul>\n\u003Cp>Эти и другие риски описаны в статье \u003Ca href=\"/ru/wiki/mcp/mcp-security\" class=\"wiki-link wiki-link--article\">Безопасность MCP\u003C/a>, проверки авторизации сервера - в статье \u003Ca href=\"/ru/wiki/mcp/testing-mcp-servers\" class=\"wiki-link wiki-link--article\">Тестирование MCP-серверов\u003C/a>.\u003C/p>\n\u003Ch2 id=\"расширения-авторизации\" class=\"wiki-heading\">Расширения авторизации\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"расширения-авторизации\" aria-label=\"Скопировать ссылку на раздел\" data-copied-label=\"Ссылка на раздел скопирована\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h2>\n\u003Cp>Случаи без интерактивного согласия пользователя покрывают два официальных расширения. OAuth Client Credentials определяет доступ между системами. \u003Cstrong>Enterprise-Managed Authorization\u003C/strong> (\u003Ccode>io.modelcontextprotocol/enterprise-managed-authorization\u003C/code>) позволяет организации управлять доступом к MCP-серверам через свой провайдер идентификации, и сотрудникам не нужно авторизовывать каждый сервер отдельно. Расширения описаны в статье \u003Ca href=\"/ru/wiki/mcp/mcp-extensions\" class=\"wiki-link wiki-link--article\">Расширения MCP\u003C/a>.\u003C/p>\n\u003Ch2 id=\"авторизация-mcp-и-смежные-механизмы\" class=\"wiki-heading\">Авторизация MCP и смежные механизмы\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"авторизация-mcp-и-смежные-механизмы\" aria-label=\"Скопировать ссылку на раздел\" data-copied-label=\"Ссылка на раздел скопирована\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h2>\n\u003Cp>С учётными данными в MCP и рядом с ним работают несколько механизмов. В таблице - чем они различаются.\u003C/p>\n\u003Cdiv class=\"wiki-table wiki-table--cols-4\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Механизм\u003C/th>\n\u003Cth>Кто авторизуется\u003C/th>\n\u003Cth>Откуда учётные данные\u003C/th>\n\u003Cth>У кого они хранятся\u003C/th>\n\u003C/tr>\n\u003C/thead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>Учётные данные из окружения\u003C/td>\n\u003Ctd>Локальный сервер на stdio во внешнем сервисе\u003C/td>\n\u003Ctd>Переменные окружения, конфигурация хоста\u003C/td>\n\u003Ctd>У процесса сервера\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Авторизация MCP\u003C/td>\n\u003Ctd>MCP-клиент на MCP-сервере\u003C/td>\n\u003Ctd>Процедура OAuth с сервером авторизации MCP-сервера\u003C/td>\n\u003Ctd>У MCP-клиента\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Elicitation в режиме URL\u003C/td>\n\u003Ctd>MCP-сервер в стороннем API\u003C/td>\n\u003Ctd>Процедура OAuth или форма, которую сервер открывает в браузере\u003C/td>\n\u003Ctd>У MCP-сервера\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Enterprise-Managed Authorization\u003C/td>\n\u003Ctd>MCP-клиент на MCP-сервере\u003C/td>\n\u003Ctd>Провайдер идентификации организации\u003C/td>\n\u003Ctd>У MCP-клиента\u003C/td>\n\u003C/tr>\n\u003C/tbody>\n\u003C/table>\u003C/div>\n\u003Cp>Авторизация MCP защищает сам MCP-сервер. Если серверу нужен доступ к стороннему сервису от имени пользователя, он получает его отдельно, через \u003Cspan class=\"wiki-term\" tabindex=\"0\" data-wiki-term=\"elicitation\">elicitation\u003C/span> в режиме URL: сервер направляет пользователя по адресу, и учётные данные не проходят через клиент. Использовать elicitation в режиме URL для авторизации пользователей на самом сервере нельзя.\u003C/p>\n\u003Cp>Две процедуры не делят токены. Запросы elicitation передаются через многоэтапные запросы (\u003Cspan class=\"wiki-term\" tabindex=\"0\" data-wiki-term=\"mrtr\">Multi Round-Trip Requests\u003C/span>), которые описаны в статье \u003Ca href=\"/ru/wiki/mcp/stateless-mcp\" class=\"wiki-link wiki-link--article\">MCP без состояния\u003C/a>.\u003C/p>\n\u003Ch2 id=\"термины\" class=\"wiki-heading\">Термины\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"термины\" aria-label=\"Скопировать ссылку на раздел\" data-copied-label=\"Ссылка на раздел скопирована\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h2>\n\u003Cdiv class=\"wiki-table wiki-table--cols-2\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Термин\u003C/th>\n\u003Cth>Значение\u003C/th>\n\u003C/tr>\n\u003C/thead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>Сервер ресурсов\u003C/td>\n\u003Ctd>Сервер, который принимает запросы с токенами доступа; в MCP - защищённый MCP-сервер\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Сервер авторизации\u003C/td>\n\u003Ctd>Сервис, который аутентифицирует пользователя и выдаёт токены доступа для MCP-сервера\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Метаданные защищённого ресурса (Protected Resource Metadata)\u003C/td>\n\u003Ctd>JSON-документ MCP-сервера (RFC 9728), где названы его серверы авторизации и права\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Client ID Metadata Document\u003C/td>\n\u003Ctd>JSON-документ по HTTPS-адресу, который служит идентификатором клиента и описывает клиент\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>PKCE\u003C/td>\n\u003Ctd>Proof Key for Code Exchange: верификатор и его хеш, которые привязывают код авторизации к клиенту, запросившему его\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Указатель ресурса\u003C/td>\n\u003Ctd>Параметр \u003Ccode>resource\u003C/code> (RFC 8707), который называет MCP-сервер, для которого запрашивается токен\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Право (scope)\u003C/td>\n\u003Ctd>Именованное разрешение, которое несёт токен доступа\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Дозапрос прав (step-up authorization)\u003C/td>\n\u003Ctd>Запрос токена с расширенными правами после ответа 403 с \u003Ccode>insufficient_scope\u003C/code>\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Атака mix-up\u003C/td>\n\u003Ctd>Атака, при которой вредоносный сервер авторизации получает код или токен, выданный другим сервером\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Токен обновления\u003C/td>\n\u003Ctd>Токен, который позволяет клиенту получить новый токен доступа без участия пользователя\u003C/td>\n\u003C/tr>\n\u003C/tbody>\n\u003C/table>\u003C/div>\n\u003Ch2 id=\"источники\" class=\"wiki-heading\">Источники\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"источники\" aria-label=\"Скопировать ссылку на раздел\" data-copied-label=\"Ссылка на раздел скопирована\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h2>\n\u003Cul>\n\u003Cli>\u003Ca href=\"https://modelcontextprotocol.io/specification/2026-07-28/basic/authorization\" target=\"_blank\" rel=\"noopener\" class=\"wiki-link wiki-link--external\">Authorization, спецификация 2026-07-28\u003Csvg class=\"wiki-link__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M228,104a12,12,0,0,1-24,0V69l-59.51,59.51a12,12,0,0,1-17-17L187,52H152a12,12,0,0,1,0-24h64a12,12,0,0,1,12,12Zm-44,24a12,12,0,0,0-12,12v64H52V84h64a12,12,0,0,0,0-24H48A20,20,0,0,0,28,80V208a20,20,0,0,0,20,20H176a20,20,0,0,0,20-20V140A12,12,0,0,0,184,128Z\"/>\u003C/svg>\u003Cspan class=\"wiki-visually-hidden\">(откроется в новой вкладке)\u003C/span>\u003C/a> (на английском)\u003C/li>\n\u003Cli>\u003Ca href=\"https://modelcontextprotocol.io/specification/2026-07-28/basic/authorization/authorization-server-discovery\" target=\"_blank\" rel=\"noopener\" class=\"wiki-link wiki-link--external\">Authorization Server Discovery, спецификация 2026-07-28\u003Csvg class=\"wiki-link__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M228,104a12,12,0,0,1-24,0V69l-59.51,59.51a12,12,0,0,1-17-17L187,52H152a12,12,0,0,1,0-24h64a12,12,0,0,1,12,12Zm-44,24a12,12,0,0,0-12,12v64H52V84h64a12,12,0,0,0,0-24H48A20,20,0,0,0,28,80V208a20,20,0,0,0,20,20H176a20,20,0,0,0,20-20V140A12,12,0,0,0,184,128Z\"/>\u003C/svg>\u003Cspan class=\"wiki-visually-hidden\">(откроется в новой вкладке)\u003C/span>\u003C/a> (на английском)\u003C/li>\n\u003Cli>\u003Ca href=\"https://modelcontextprotocol.io/specification/2026-07-28/basic/authorization/client-registration\" target=\"_blank\" rel=\"noopener\" class=\"wiki-link wiki-link--external\">Client Registration, спецификация 2026-07-28\u003Csvg class=\"wiki-link__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M228,104a12,12,0,0,1-24,0V69l-59.51,59.51a12,12,0,0,1-17-17L187,52H152a12,12,0,0,1,0-24h64a12,12,0,0,1,12,12Zm-44,24a12,12,0,0,0-12,12v64H52V84h64a12,12,0,0,0,0-24H48A20,20,0,0,0,28,80V208a20,20,0,0,0,20,20H176a20,20,0,0,0,20-20V140A12,12,0,0,0,184,128Z\"/>\u003C/svg>\u003Cspan class=\"wiki-visually-hidden\">(откроется в новой вкладке)\u003C/span>\u003C/a> (на английском)\u003C/li>\n\u003Cli>\u003Ca href=\"https://modelcontextprotocol.io/specification/2026-07-28/basic/authorization/security-considerations\" target=\"_blank\" rel=\"noopener\" class=\"wiki-link wiki-link--external\">Authorization Security Considerations, спецификация 2026-07-28\u003Csvg class=\"wiki-link__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M228,104a12,12,0,0,1-24,0V69l-59.51,59.51a12,12,0,0,1-17-17L187,52H152a12,12,0,0,1,0-24h64a12,12,0,0,1,12,12Zm-44,24a12,12,0,0,0-12,12v64H52V84h64a12,12,0,0,0,0-24H48A20,20,0,0,0,28,80V208a20,20,0,0,0,20,20H176a20,20,0,0,0,20-20V140A12,12,0,0,0,184,128Z\"/>\u003C/svg>\u003Cspan class=\"wiki-visually-hidden\">(откроется в новой вкладке)\u003C/span>\u003C/a> (на английском)\u003C/li>\n\u003Cli>\u003Ca href=\"https://modelcontextprotocol.io/specification/2026-07-28/changelog\" target=\"_blank\" rel=\"noopener\" class=\"wiki-link wiki-link--external\">Key Changes, спецификация 2026-07-28\u003Csvg class=\"wiki-link__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M228,104a12,12,0,0,1-24,0V69l-59.51,59.51a12,12,0,0,1-17-17L187,52H152a12,12,0,0,1,0-24h64a12,12,0,0,1,12,12Zm-44,24a12,12,0,0,0-12,12v64H52V84h64a12,12,0,0,0,0-24H48A20,20,0,0,0,28,80V208a20,20,0,0,0,20,20H176a20,20,0,0,0,20-20V140A12,12,0,0,0,184,128Z\"/>\u003C/svg>\u003Cspan class=\"wiki-visually-hidden\">(откроется в новой вкладке)\u003C/span>\u003C/a> (на английском)\u003C/li>\n\u003Cli>\u003Ca href=\"https://modelcontextprotocol.io/specification/2025-03-26/basic/authorization\" target=\"_blank\" rel=\"noopener\" class=\"wiki-link wiki-link--external\">Authorization, спецификация 2025-03-26\u003Csvg class=\"wiki-link__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M228,104a12,12,0,0,1-24,0V69l-59.51,59.51a12,12,0,0,1-17-17L187,52H152a12,12,0,0,1,0-24h64a12,12,0,0,1,12,12Zm-44,24a12,12,0,0,0-12,12v64H52V84h64a12,12,0,0,0,0-24H48A20,20,0,0,0,28,80V208a20,20,0,0,0,20,20H176a20,20,0,0,0,20-20V140A12,12,0,0,0,184,128Z\"/>\u003C/svg>\u003Cspan class=\"wiki-visually-hidden\">(откроется в новой вкладке)\u003C/span>\u003C/a> (на английском)\u003C/li>\n\u003Cli>\u003Ca href=\"https://modelcontextprotocol.io/specification/2025-06-18/changelog\" target=\"_blank\" rel=\"noopener\" class=\"wiki-link wiki-link--external\">Key Changes, спецификация 2025-06-18\u003Csvg class=\"wiki-link__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M228,104a12,12,0,0,1-24,0V69l-59.51,59.51a12,12,0,0,1-17-17L187,52H152a12,12,0,0,1,0-24h64a12,12,0,0,1,12,12Zm-44,24a12,12,0,0,0-12,12v64H52V84h64a12,12,0,0,0,0-24H48A20,20,0,0,0,28,80V208a20,20,0,0,0,20,20H176a20,20,0,0,0,20-20V140A12,12,0,0,0,184,128Z\"/>\u003C/svg>\u003Cspan class=\"wiki-visually-hidden\">(откроется в новой вкладке)\u003C/span>\u003C/a> (на английском)\u003C/li>\n\u003Cli>\u003Ca href=\"https://modelcontextprotocol.io/specification/2025-11-25/changelog\" target=\"_blank\" rel=\"noopener\" class=\"wiki-link wiki-link--external\">Key Changes, спецификация 2025-11-25\u003Csvg class=\"wiki-link__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M228,104a12,12,0,0,1-24,0V69l-59.51,59.51a12,12,0,0,1-17-17L187,52H152a12,12,0,0,1,0-24h64a12,12,0,0,1,12,12Zm-44,24a12,12,0,0,0-12,12v64H52V84h64a12,12,0,0,0,0-24H48A20,20,0,0,0,28,80V208a20,20,0,0,0,20,20H176a20,20,0,0,0,20-20V140A12,12,0,0,0,184,128Z\"/>\u003C/svg>\u003Cspan class=\"wiki-visually-hidden\">(откроется в новой вкладке)\u003C/span>\u003C/a> (на английском)\u003C/li>\n\u003Cli>\u003Ca href=\"https://modelcontextprotocol.io/extensions/auth/enterprise-managed-authorization\" target=\"_blank\" rel=\"noopener\" class=\"wiki-link wiki-link--external\">Enterprise-Managed Authorization\u003Csvg class=\"wiki-link__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M228,104a12,12,0,0,1-24,0V69l-59.51,59.51a12,12,0,0,1-17-17L187,52H152a12,12,0,0,1,0-24h64a12,12,0,0,1,12,12Zm-44,24a12,12,0,0,0-12,12v64H52V84h64a12,12,0,0,0,0-24H48A20,20,0,0,0,28,80V208a20,20,0,0,0,20,20H176a20,20,0,0,0,20-20V140A12,12,0,0,0,184,128Z\"/>\u003C/svg>\u003Cspan class=\"wiki-visually-hidden\">(откроется в новой вкладке)\u003C/span>\u003C/a> (на английском)\u003C/li>\n\u003Cli>\u003Ca href=\"https://datatracker.ietf.org/doc/html/draft-ietf-oauth-v2-1-13\" target=\"_blank\" rel=\"noopener\" class=\"wiki-link wiki-link--external\">The OAuth 2.1 Authorization Framework, draft-ietf-oauth-v2-1-13\u003Csvg class=\"wiki-link__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M228,104a12,12,0,0,1-24,0V69l-59.51,59.51a12,12,0,0,1-17-17L187,52H152a12,12,0,0,1,0-24h64a12,12,0,0,1,12,12Zm-44,24a12,12,0,0,0-12,12v64H52V84h64a12,12,0,0,0,0-24H48A20,20,0,0,0,28,80V208a20,20,0,0,0,20,20H176a20,20,0,0,0,20-20V140A12,12,0,0,0,184,128Z\"/>\u003C/svg>\u003Cspan class=\"wiki-visually-hidden\">(откроется в новой вкладке)\u003C/span>\u003C/a> (на английском)\u003C/li>\n\u003Cli>\u003Ca href=\"https://datatracker.ietf.org/doc/html/rfc6749\" target=\"_blank\" rel=\"noopener\" class=\"wiki-link wiki-link--external\">RFC 6749: The OAuth 2.0 Authorization Framework\u003Csvg class=\"wiki-link__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M228,104a12,12,0,0,1-24,0V69l-59.51,59.51a12,12,0,0,1-17-17L187,52H152a12,12,0,0,1,0-24h64a12,12,0,0,1,12,12Zm-44,24a12,12,0,0,0-12,12v64H52V84h64a12,12,0,0,0,0-24H48A20,20,0,0,0,28,80V208a20,20,0,0,0,20,20H176a20,20,0,0,0,20-20V140A12,12,0,0,0,184,128Z\"/>\u003C/svg>\u003Cspan class=\"wiki-visually-hidden\">(откроется в новой вкладке)\u003C/span>\u003C/a> (на английском)\u003C/li>\n\u003Cli>\u003Ca href=\"https://datatracker.ietf.org/doc/html/rfc9728\" target=\"_blank\" rel=\"noopener\" class=\"wiki-link wiki-link--external\">RFC 9728: OAuth 2.0 Protected Resource Metadata\u003Csvg class=\"wiki-link__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M228,104a12,12,0,0,1-24,0V69l-59.51,59.51a12,12,0,0,1-17-17L187,52H152a12,12,0,0,1,0-24h64a12,12,0,0,1,12,12Zm-44,24a12,12,0,0,0-12,12v64H52V84h64a12,12,0,0,0,0-24H48A20,20,0,0,0,28,80V208a20,20,0,0,0,20,20H176a20,20,0,0,0,20-20V140A12,12,0,0,0,184,128Z\"/>\u003C/svg>\u003Cspan class=\"wiki-visually-hidden\">(откроется в новой вкладке)\u003C/span>\u003C/a> (на английском)\u003C/li>\n\u003Cli>\u003Ca href=\"https://datatracker.ietf.org/doc/html/rfc8414\" target=\"_blank\" rel=\"noopener\" class=\"wiki-link wiki-link--external\">RFC 8414: OAuth 2.0 Authorization Server Metadata\u003Csvg class=\"wiki-link__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M228,104a12,12,0,0,1-24,0V69l-59.51,59.51a12,12,0,0,1-17-17L187,52H152a12,12,0,0,1,0-24h64a12,12,0,0,1,12,12Zm-44,24a12,12,0,0,0-12,12v64H52V84h64a12,12,0,0,0,0-24H48A20,20,0,0,0,28,80V208a20,20,0,0,0,20,20H176a20,20,0,0,0,20-20V140A12,12,0,0,0,184,128Z\"/>\u003C/svg>\u003Cspan class=\"wiki-visually-hidden\">(откроется в новой вкладке)\u003C/span>\u003C/a> (на английском)\u003C/li>\n\u003Cli>\u003Ca href=\"https://www.rfc-editor.org/rfc/rfc8707.html\" target=\"_blank\" rel=\"noopener\" class=\"wiki-link wiki-link--external\">RFC 8707: Resource Indicators for OAuth 2.0\u003Csvg class=\"wiki-link__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M228,104a12,12,0,0,1-24,0V69l-59.51,59.51a12,12,0,0,1-17-17L187,52H152a12,12,0,0,1,0-24h64a12,12,0,0,1,12,12Zm-44,24a12,12,0,0,0-12,12v64H52V84h64a12,12,0,0,0,0-24H48A20,20,0,0,0,28,80V208a20,20,0,0,0,20,20H176a20,20,0,0,0,20-20V140A12,12,0,0,0,184,128Z\"/>\u003C/svg>\u003Cspan class=\"wiki-visually-hidden\">(откроется в новой вкладке)\u003C/span>\u003C/a> (на английском)\u003C/li>\n\u003Cli>\u003Ca href=\"https://datatracker.ietf.org/doc/html/rfc9207\" target=\"_blank\" rel=\"noopener\" class=\"wiki-link wiki-link--external\">RFC 9207: OAuth 2.0 Authorization Server Issuer Identification\u003Csvg class=\"wiki-link__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M228,104a12,12,0,0,1-24,0V69l-59.51,59.51a12,12,0,0,1-17-17L187,52H152a12,12,0,0,1,0-24h64a12,12,0,0,1,12,12Zm-44,24a12,12,0,0,0-12,12v64H52V84h64a12,12,0,0,0,0-24H48A20,20,0,0,0,28,80V208a20,20,0,0,0,20,20H176a20,20,0,0,0,20-20V140A12,12,0,0,0,184,128Z\"/>\u003C/svg>\u003Cspan class=\"wiki-visually-hidden\">(откроется в новой вкладке)\u003C/span>\u003C/a> (на английском)\u003C/li>\n\u003Cli>\u003Ca href=\"https://datatracker.ietf.org/doc/html/rfc7636\" target=\"_blank\" rel=\"noopener\" class=\"wiki-link wiki-link--external\">RFC 7636: Proof Key for Code Exchange by OAuth Public Clients\u003Csvg class=\"wiki-link__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M228,104a12,12,0,0,1-24,0V69l-59.51,59.51a12,12,0,0,1-17-17L187,52H152a12,12,0,0,1,0-24h64a12,12,0,0,1,12,12Zm-44,24a12,12,0,0,0-12,12v64H52V84h64a12,12,0,0,0,0-24H48A20,20,0,0,0,28,80V208a20,20,0,0,0,20,20H176a20,20,0,0,0,20-20V140A12,12,0,0,0,184,128Z\"/>\u003C/svg>\u003Cspan class=\"wiki-visually-hidden\">(откроется в новой вкладке)\u003C/span>\u003C/a> (на английском)\u003C/li>\n\u003Cli>\u003Ca href=\"https://datatracker.ietf.org/doc/html/rfc7591\" target=\"_blank\" rel=\"noopener\" class=\"wiki-link wiki-link--external\">RFC 7591: OAuth 2.0 Dynamic Client Registration Protocol\u003Csvg class=\"wiki-link__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M228,104a12,12,0,0,1-24,0V69l-59.51,59.51a12,12,0,0,1-17-17L187,52H152a12,12,0,0,1,0-24h64a12,12,0,0,1,12,12Zm-44,24a12,12,0,0,0-12,12v64H52V84h64a12,12,0,0,0,0-24H48A20,20,0,0,0,28,80V208a20,20,0,0,0,20,20H176a20,20,0,0,0,20-20V140A12,12,0,0,0,184,128Z\"/>\u003C/svg>\u003Cspan class=\"wiki-visually-hidden\">(откроется в новой вкладке)\u003C/span>\u003C/a> (на английском)\u003C/li>\n\u003Cli>\u003Ca href=\"https://datatracker.ietf.org/doc/html/draft-ietf-oauth-client-id-metadata-document-00\" target=\"_blank\" rel=\"noopener\" class=\"wiki-link wiki-link--external\">OAuth Client ID Metadata Document, draft-ietf-oauth-client-id-metadata-document-00\u003Csvg class=\"wiki-link__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M228,104a12,12,0,0,1-24,0V69l-59.51,59.51a12,12,0,0,1-17-17L187,52H152a12,12,0,0,1,0-24h64a12,12,0,0,1,12,12Zm-44,24a12,12,0,0,0-12,12v64H52V84h64a12,12,0,0,0,0-24H48A20,20,0,0,0,28,80V208a20,20,0,0,0,20,20H176a20,20,0,0,0,20-20V140A12,12,0,0,0,184,128Z\"/>\u003C/svg>\u003Cspan class=\"wiki-visually-hidden\">(откроется в новой вкладке)\u003C/span>\u003C/a> (на английском)\u003C/li>\n\u003C/ul>\n",[10,14,17,20,23,26,29,32,36,39,42,45,48,51,54,57,60,63,66,69,72,75,78,81,84,87,90,93,96],{"id":11,"level":12,"text":13},"кратко",2,"Кратко",{"id":15,"level":12,"text":16},"какую-задачу-решает","Какую задачу решает",{"id":18,"level":12,"text":19},"история","История",{"id":21,"level":12,"text":22},"роли","Роли",{"id":24,"level":12,"text":25},"когда-применяется-авторизация","Когда применяется авторизация",{"id":27,"level":12,"text":28},"полная-процедура","Полная процедура",{"id":30,"level":12,"text":31},"обнаружение","Обнаружение",{"id":33,"level":34,"text":35},"метаданные-защищённого-ресурса",3,"Метаданные защищённого ресурса",{"id":37,"level":34,"text":38},"метаданные-сервера-авторизации","Метаданные сервера авторизации",{"id":40,"level":12,"text":41},"регистрация-клиента","Регистрация клиента",{"id":43,"level":34,"text":44},"client-id-metadata-documents","Client ID Metadata Documents",{"id":46,"level":34,"text":47},"предварительная-регистрация","Предварительная регистрация",{"id":49,"level":34,"text":50},"dynamic-client-registration","Dynamic Client Registration",{"id":52,"level":34,"text":53},"привязка-учётных-данных-к-серверу-авторизации","Привязка учётных данных к серверу авторизации",{"id":55,"level":12,"text":56},"запрос-авторизации-и-токен","Запрос авторизации и токен",{"id":58,"level":34,"text":59},"pkce","PKCE",{"id":61,"level":34,"text":62},"указатели-ресурса","Указатели ресурса",{"id":64,"level":34,"text":65},"проверка-издателя","Проверка издателя",{"id":67,"level":12,"text":68},"использование-токена-доступа","Использование токена доступа",{"id":70,"level":12,"text":71},"ошибки-и-права","Ошибки и права",{"id":73,"level":34,"text":74},"коды-ответа","Коды ответа",{"id":76,"level":34,"text":77},"выбор-прав","Выбор прав",{"id":79,"level":34,"text":80},"дозапрос-прав","Дозапрос прав",{"id":82,"level":12,"text":83},"токены-обновления","Токены обновления",{"id":85,"level":12,"text":86},"требования-безопасности","Требования безопасности",{"id":88,"level":12,"text":89},"расширения-авторизации","Расширения авторизации",{"id":91,"level":12,"text":92},"авторизация-mcp-и-смежные-механизмы","Авторизация MCP и смежные механизмы",{"id":94,"level":12,"text":95},"термины","Термины",{"id":97,"level":12,"text":98},"источники","Источники",2375,1793718889118]