MCP + OAuth2.1 + AWS Cognito Example
Пример защиты сервера с OAuth 2.1 и AWS Cognito, совместимый с любым провайдером авторизации
Описание
Репозиторий демонстрирует защиту сервера с использованием OAuth 2.1, где AWS Cognito выступает как пример authorization server, но реализация provider-agnostic. Основан на Node.js и Express.js. Ключевые особенности: динамическое обнаружение метаданных, Authorization Code Flow с PKCE, Dynamic Client Registration (DCR) по RFC7591, Protected Resource Metadata по RFC9728. Применения: интеграция с identity providers вроде Okta или Auth0 для безопасного доступа к ресурсам, особенно в микросервисах и API.
Возможности
Динамическое обнаружение метаданных
Автоматическое получение authorization server metadata без жёстко заданных эндпоинтов
OAuth 2.1 Authorization Code Flow с PKCE
Безопасный поток авторизации с доказательством владения кодом и resource indicators по RFC8707
Dynamic Client Registration (DCR)
Автоматическая регистрация клиентов с получением credentials, эмулируя RFC7591 через AWS Lambda и API Gateway
Protected Resource Metadata (PRM)
Сервировка PRM-документа по RFC9728 для описания scopes и authorization servers
Валидация токенов
Динамическая проверка JWT с использованием JWKS URI из метаданных authorization server
Provider-agnostic дизайн
Совместимость с любым OAuth 2.1 compliant сервером, таким как AWS Cognito, Okta или Auth0
Установка
Предварительные требования: Node.js, AWS аккаунт с Cognito, API Gateway, Lambda, DynamoDB, CloudFormation.
- Клонируйте репозиторий: git clone https://github.com/empires-security/mcp-oauth2-aws-cognito.git && cd mcp-oauth2-aws-cognito
- Установите зависимости: npm run install:all
- Разверните AWS ресурсы: npm run deploy
- Проверьте .env файлы в src/client, src/auto-client, src/mcp-server.
- Запустите: npm run dev Для тестирования посетите http://localhost:3000 и http://localhost:3002. Очистка: npm run cleanup