Обновить

MCP-серверы для всей команды: от локального запуска, до централизованного доступа

Уровень сложностиСредний
Время на прочтение6 мин
Охват и читатели7.5K
Рейтинг0
Комментарии7

Комментарии 7

Как вы решаете per-user авторизацию для MCP?

Token-exchange в клоке: мой MCP-сервер умеет в OAuth - при подключении авторизуемся через PKCE (через браузер), потом MCP-сервер меняет токен на соответствующий для таргета. Как я понимаю - вам больше первая стадия интересна

Стараемся оставлять поддержку сквозной авторизации в тех MCP серверах, которые ее поддерживают. В остальных случаях пока через общую сервисную учетоку. Через Keycloak интересное решение. Если правильно понял флоу: клиент при подключении к MCP-серверу проходит OAuth 2.1 с PKCE через браузер, получает токен, а дальше MCP-сервер делает token exchange в Keycloak и ходит к целевым системам уже от имени конкретного пользователя?

Да, всё верно. По сути, механика следующая:

Клиент логинится через браузер по OAuth 2.1 с PKCE и получает от Keycloak токен, выписанный специально для MCP-сервера. Дальше клиент просто прикрепляет его ко всем своим запросам.

Получив запрос, MCP-сервер берёт этот токен, стучится в Keycloak и меняет его (через token exchange по RFC 8693) на новый, предназначенный уже для конкретной целевой системы. Идентификатор пользователя при этом сохраняется. С этим новым токеном MCP-сервер и идёт в систему, действуя от лица юзера.

Но схема работает, только если конечная система умеет валидировать токены Keycloak. Например, с Jira DC это не прокатило - там пришлось поднимать отдельный OAuth-флоу до самой Джиры и хранить токены индивидуально для каждого пользователя в шифрованном кэше.

Чтобы не положить Keycloak постоянными запросами на обмен, новые токены кэшируются в памяти MCP-сервера. Они лежат там до тех пор, пока до истечения срока их действия (exp) не останется 30 секунд.

На самом деле всё порываюсь зарелизить крейт авторизационного слоя для MCP реализующего аутентификацию и авторизацию на пути к функциональному MCP-серверу, но жоска ленюсь - там 100%ный Клод конечно, но очень плотно оттестированный

Опубликовал релиз: https://github.com/andrico21/rmcp-server-kit

GUIDE.md, Recipe 2 - натравите ллмку, будет быстрее понять 😁

Выглядит интересно. Посмотрю, могу ли использовать у себя. Спасибо

Хорошая статья. С per-user авторизацией сейчас реальная беда, стандартов нет совсем. Я сам из-за бесконечных костылей с доступами и локальными конфигами агентов в итоге перебрался в Kodik - там хотя бы можно просто кодить и нормально контролить диффы, не настраивая перед этим K8s-кластер) Для агентского кодинга мне кажется лучший вариант сейчас

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации