OAuth服务器

一个完整的OAuth 2.1服务器实现,支持PKCE,适用于需要高级认证模式的FastMCP应用。

  • by jaysunmah
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 jaysunmah/oauth_mcp

使用说明

OAuth MCP服务器

支持PKCE的FastMCP的完整OAuth 2.1服务器实现。

⚠️ 安全警告

这是一种高级身份验证模式。 构建一个安全的OAuth服务器需要在身份验证协议、密码学和安全最佳实践方面拥有深厚的专业知识。FastMCP文档强烈建议使用远程OAuth或OAuth代理,除非您有强制要求。

看 OAUTH_README.md 以获取完整的文档。

快速开始

安装

# Install dependencies
uv sync

运行服务器

python main.py

服务器将于启动 http://localhost:8000 注册了演示OAuth客户端。

测试OAuth流

在单独的终端中:

python oauth_client_example.py

这将演示完整的OAuth 2.1流程,包括:

  • PKCE挑战/验证器生成
  • 授权码交换
  • 访问令牌使用情况
  • 令牌刷新

测试动态客户端注册

在运行时动态注册新的OAuth客户端:

python test_dcr.py

或者使用curl:

curl -X POST http://localhost:8000/oauth/register \
  -H "Content-Type: application/json" \
  -d '{
    "redirect_uris": ["http://localhost:5000/callback"],
    "client_name": "My App",
    "scope": "read write"
  }'

服务器将以 client_id 和 client_secret 您可以立即使用。

测试新的OAuth端点

测试所有新的OAuth 2.0/2.1端点:

python test_new_endpoints.py

该测试:

  • OAuth授权服务器元数据发现
  • 令牌撤销(RFC 7009)
  • 令牌自检(RFC 7662)
  • UserInfo端点

演示凭据

OAuth客户端:

  • 客户端ID: demo_client
  • 客户端密码: demo_secret

演示用户:

  • 用户名: demo_user
  • 密码: demo_password

项目结构

oauth_mcp/
├── main.py                      # FastMCP server with OAuth
├── oauth_provider.py            # OAuth 2.1 server implementation
├── oauth_client_example.py      # Complete OAuth flow demo
├── test_dcr.py                  # Dynamic Client Registration test
├── test_new_endpoints.py        # Tests for all new OAuth endpoints
├── client.py                    # Original simple client (no auth)
├── OAUTH_README.md             # Complete documentation
└── README.md                   # This file

特性

✅ 完整的OAuth 2.1实现
✅ PKCE(代码交换证明密钥)
✅ 授权码流
✅ 令牌刷新与轮换
✅ 令牌撤销(RFC 7009)
✅ 令牌自检(RFC 7662)
✅ 范围验证
✅ CSRF保护状态参数
✅ 动态客户端注册(DCR)-RFC 7591
✅ OAuth授权服务器元数据(RFC 8414)
✅ OAuth保护资源元数据(RFC 9470)
✅ 用户配置文件的UserInfo端点

文档

看 OAUTH_README.md 用于:

  • 详细架构
  • 安全注意事项
  • 生产部署指南
  • 数据库模型
  • 测试策略
  • 故障排除

参考文献

许可证

版权所有Anysphere股份有限公司。