AI代理网关用户联邦服务

通过Amazon Bedrock AgentCore网关拦截器,将OAuth 2.0保护的API作为MCP工具暴露给AI代理,同时保留用户认证上下文。

  • by aws-samples
  • Python
  • 本地部署
  • 4 星标
  • 更新于
在 GitHub 查看 aws-samples/sample-bedrock-agentcore-gateway-user-federation

使用说明

亚马逊基岩代理核心网关用户联合会

将OAuth 2.0安全API作为人工智能代理的MCP工具公开,同时使用Amazon Bedrock AgentCore网关拦截器保留用户身份验证上下文。

主要特点

  • 用户_联邦模式 -JWT在整个请求链中的传播
  • 三层JWT验证 -运行时、网关和API网关
  • 网关拦截器 -向下游API注入授权标头
  • CUSTOM_JWT授权人 -与任何OIDC提供商(Okta、Auth0、Azure AD、亚马逊Cognito)合作

快速开始

# 1. Clone repository
git clone https://github.com/aws-samples/sample-bedrock-agentcore-gateway-user-federation.git
cd sample-bedrock-agentcore-gateway-user-federation

# 2. Configure environment (see docs/SETUP.md)
cp frontend/.env.example frontend/.env
cp backend/.env.example backend/.env
cp api/.env.example api/.env

# 3. Start services (3 terminals)

# Terminal 1 - Frontend
cd frontend && npm install && npm start

# Terminal 2 - Backend
cd backend && python3 -m venv .venv && source .venv/bin/activate && pip install -r requirements.txt && python src/app.py

# Terminal 3 - API
cd api && python3 -m venv .venv && source .venv/bin/activate && pip install -r requirements.txt && python src/api.py

访问: http://localhost:3000


项目结构

three-tier-chat-app/
├── docs/                   # Project documentation
│   ├── README.md           # Architecture overview
│   ├── SETUP.md            # Setup guide
│   ├── DEPLOYMENT.md       # AWS deployment
│   ├── ARCHITECTURE.md     # Detailed architecture & diagrams
│   └── SECURITY.md         # Security guidelines
│
├── frontend/               # React application (Port 3000)
│   ├── src/
│   │   ├── components/     # React components
│   │   ├── App.js          # Main app
│   │   └── index.js        # Entry point
│   ├── package.json
│   └── .env.example
│
├── backend/                # Backend proxy (Port 5002)
│   ├── src/
│   │   └── app.py          # Flask application
│   ├── requirements.txt
│   └── .env.example
│
├── api/                    # Secured API (Port 5001)
│   ├── src/
│   │   ├── api.py          # Flask application
│   │   └── user_database.py # Mock database
│   ├── requirements.txt
│   └── .env.example
│
├── agentcore/              # AgentCore agent
│   ├── agents/
│   │   └── userassistant/  # User assistant agent
│   └── README.md
│
├── base-infra/             # Infrastructure
│   ├── cdk/                # AWS CDK stacks
│   ├── scripts/            # Utility scripts
│   └── README.md
│
└── README.md               # This file

建筑

flowchart LR
    User([User]) --> Frontend[Frontend<br/>React + Okta]
    Frontend -->|JWT| Backend[Backend<br/>Flask]
    Backend --> API[Secured API<br/>Lambda]
    Backend --> Agent[AgentCore<br/>AI Agent]
    Agent -.->|Federated JWT| API

数据流: User → Frontend → Backend → API / AgentCore → Response

看 docs/ARCHITECTURE.md 有关详细的序列图、安全标头和跟踪。


特性

身份验证和安全

  • Okta SSO,带授权码+PKCE流
  • 每层JWT签名验证
  • CORS仅限于特定来源
  • 安全标头(HSTS、CSP等)
  • 代码中没有秘密(.env文件被忽略)

用户体验

  • 具有响应式设计的现代React UI
  • 与AgentCore进行人工智能聊天
  • 用户配置文件显示
  • API流量对比演示

人工智能能力

  • 使用Claude的上下文感知响应
  • USER_FEDERATION(代理使用用户的JWT)
  • 访问用户特定数据
  • 会话管理

POC功能

  • 模拟数据库(无需基础设施设置)
  • 调试模式已启用
  • 详细的开发错误消息

文档

文档 描述
docs/SETUP.md 入门指南
文档/部署.md AWS部署说明
docs/ARCHITECTURE.md 详细的架构图
docs/SECURITY.md 安全指南

组件文档


技术栈

层 技术
前端 React 18、Okta React SDK、Axios、React Router
后端 Python 3.11、Flask 3.0、PyJWT 2.8
API Python 3.11,Flask(Lambda就绪),模拟数据库
基础设施 AWS CDK、Lambda、S3、CloudFront、API网关
人工智能 AWS基岩代理核心,克劳德

发展

先决条件

  • Node.js 18+
  • Python 3.10+
  • OCT账户
  • AWS帐户(用于AgentCore)

本地开发

每个服务都独立运行:

# Frontend (http://localhost:3000)
cd frontend && npm install && npm start

# Backend (http://localhost:5002)
cd backend && pip install -r requirements.txt && python src/app.py

# API (http://localhost:5001)
cd api && pip install -r requirements.txt && python src/api.py

部署

AWS部署

cd base-infra/cdk

# Install dependencies
npm install

# Bootstrap CDK (first time only)
cdk bootstrap aws://ACCOUNT_ID/REGION

# Deploy all stacks
cdk deploy --all

看 文档/部署.md 详细说明。


安全

这是一个 教育项目 演示云原生架构模式。

已实施:

  • git中没有秘密(.env文件gitignored)
  • 在每一层验证JWT签名
  • 控制台日志中没有敏感数据
  • AWS凭据受保护

延期生产:

  • 速率限制
  • 输入验证
  • CSRF保护
  • 真实数据库

对于生产部署,请遵循安全最佳实践:

看 docs/SECURITY.md 详细的安全指南。


故障排除

端口已在使用中:

lsof -ti:3000  # Find process
kill -9 <PID>  # Kill process

Okta身份验证失败:

  • 在Okta仪表板中验证重定向URI
  • 检查OKTA_ISSUER包括 /oauth2/default
  • 确保已启用PKCE

CORS错误:

  • 验证后端/.env中的ALLOWED_ORIGINS
  • 检查后端是否正在运行
  • 清除浏览器缓存

路线图

电流(POC)

  • [x] Okta SSO身份验证
  • [x] 三层架构
  • [x] AgentCore与USER_FEDERATION的集成
  • [x] AWS CDK基础架构(AgentCore的alpha构造)
  • [x] 使用OpenTetry/ADOT进行分布式跟踪
  • [x] 模拟数据库
  • [x] 安全审查

未来(生产)

  • []真实数据库(DynamoDB/RDS)
  • []速率限制和输入验证
  • []综合测试套件
  • []CI/CD管道
  • []监控和警报

联系

Abhijeet Patil github: @普拉杰瓦伦德拉

安全

看 贡献 了解更多信息。

许可证

此库根据MIT-0许可证获得许可。请参阅LICENSE文件。