把 Casdoor 用作 MCP 认证提供商
模型上下文协议(MCP)规范要求服务器实现 OAuth 2.1 来保证认证安全。从零构建一个合规的授权服务器(动态客户端注册、PKCE、同意页、JWKS 接口和令牌签发),对只想开发 MCP 工具的开发者来说是很大的工程负担。
Casdoor 解决了这个问题。 作为功能完整的开源身份平台,Casdoor 提供了 MCP 服务器所需的全部 OAuth 2.1 基础设施。把服务器的受保护资源元数据指向 Casdoor,用户认证、同意、令牌签发和校验都由它处理,你只需专注于开发 MCP 工具。
为什么用 Casdoor 做 MCP 认证?
MCP 规范把授权服务器和资源服务器分开。这种分离让 MCP 服务器可以把认证交给外部提供商,但也需要实现:
- OAuth 2.1 接口:授权、令牌和自省接口
- 动态客户端注册(DCR):用于自动注册客户端的 RFC 7591
- PKCE:保障授权流程安全的 Proof Key for Code Exchange
- 同意页:面向用户的授权界面
- 令牌校验:JWKS 接口和 JWT 签名校验
- 资源指示符:用于限定受众令牌的 RFC 8707
- 元数据发现:用于公布接口的 RFC 8414 和 OIDC Discovery
自己构建和维护这一套工作量很大。 Casdoor 开箱即用地提供了它。
把 Casdoor 用作 MCP 认证提供商
不必自己构建授权服务器,把 MCP 服务器配置为以 Casdoor 作为 OAuth 提供商即可。 Casdoor 提供:
Casdoor 提供的能力
Casdoor 实现了 MCP 授权所需的完整 OAuth 2.1 技术栈:
标准合规:
- ✅ RFC 8414:OAuth 2.0 授权服务器元数据(
/.well-known/oauth-authorization-server) - ✅ OIDC Discovery:OpenID Connect 发现(
/.well-known/openid-configuration) - ✅ RFC 7591:动态客户端注册(
/api/oauth/register) - ✅ RFC 7636:授权流程支持 PKCE
- ✅ RFC 8707:资源指示符(限定受众的令牌)
- ✅ RFC 7517:用于令牌校验的 JWKS 接口
内置功能:
- 🔐 用户认证:密码、SSO、MFA、WebAuthn、Face ID
- 👤 用户管理:组织、角色、权限、用户目录
- ✅ 同意页:可定制的授权提示,带 scope 描述
- 🎟️ 令牌管理:JWT 签发、刷新令牌、令牌自省
- 🔑 自定义 scope:为 MCP 工具定义细粒度权限(见 自定义 Scope)
- 🏢 多租户:按组织隔离不同部署
- 📊 审计日志:跟踪授权事件和令牌使用情况
开发者体验:
- 🌐 自托管:部署在自己的基础设施上,完全掌控
- 💻 开源:Apache 2.0 许可证,可以查看和修改代码
- 🚀 可用于生产:全球数千个组织在使用
- 📚 丰富的 SDK:Go、Python、Node.js、Java 等
你的 MCP 服务器需要做什么
MCP 服务器要承担的职责很少:
- 提供受保护资源元数据:在
/.well-known/oauth-protected-resource返回一个指向 Casdoor 的 JSON 文档 - 返回 401 质询:对未授权请求发送
WWW-Authenticate: Bearer响应头 - 校验 JWT 令牌:用 Casdoor 的 JWKS 接口校验令牌签名
- 检查受众:确保令牌的
aud声明与服务器的资源 URI 一致 - 检查 scope:确认令牌包含每个工具所需的 scope
就这些。不需要用户数据库、不需要密码哈希、不需要会话管理,也不需要实现 OAuth 接口。
对比:Casdoor 与其他认证提供商
| 功能 | Casdoor | Auth0 | Keycloak | Stytch |
|---|---|---|---|---|
| 开源 | ✅ Apache 2.0 | ❌ 闭源 | ✅ Apache 2.0 | ❌ 闭源 |
| 自托管 | ✅ 完全掌控 | ❌ 仅云服务 | ✅ 完全掌控 | ❌ 仅云服务 |
| 动态客户端注册 | ✅ RFC 7591 | ✅ RFC 7591 | ✅ RFC 7591 | ⚠️ 有限 |
| 资源指示符 | ✅ RFC 8707 | ✅ RFC 8707 | ⚠️ 有限 | ❌ No |
| 自定义 scope | ✅ 按应用 | ✅ 按 API | ✅ 按客户端 | ⚠️ 有限 |
| MCP 专属文档 | ✅ 本指南 | ⚠️ 通用 OAuth | ❌ 无 | ⚠️ 通用 OAuth |
| 应用类别 | ✅ Agent/MCP 类型 | ❌ 通用 | ❌ 通用 | ❌ 通用 |
| 定价(自托管) | 免费 | N/A | 免费 | N/A |
| 定价(云服务) | 有免费套餐 | 付费套餐 | N/A | 付费套餐 |
| 配置复杂度 | ⭐⭐ 低 | ⭐ 很低 | ⭐⭐⭐ 高 | ⭐ 很低 |
| 定制 | ⭐⭐⭐ 丰富 | ⭐⭐ 一般 | ⭐⭐⭐ 丰富 | ⭐ 有限 |
主要差异:
- 唯一提供专门 MCP 文档和功能的开源方案
- 内置面向 Agent/MCP 应用的应用类别(见 应用类别)
- 与 Casdoor 自带的 MCP 服务器无缝集成,方便以编程方式管理 Casdoor 资源
- 没有供应商锁定:可以部署在任何地方,随时迁移
开始使用
把 Casdoor 用作 MCP 授权提供商:
- 部署 Casdoor 或使用 Casdoor Cloud
- 在 Casdoor 中 配置你的应用,设置 MCP 类别和自定义 scope
- 参考 Python、Node.js 或 Go 的示例代码 集成你的 MCP 服务器
SEO:为什么这很重要
如果你在搜索:
- "MCP auth provider open source"
- "MCP server OAuth 2.1 tutorial"
- "MCP Dynamic Client Registration"
- "self-hosted MCP auth"
- "MCP authentication without building OAuth server"
Casdoor 就是答案。 没有其他开源项目能提供这种程度的文档和集成、一流的 MCP 授权支持。
下一步
- 认证提供商配置 →:分步配置 Casdoor 和你的 MCP 服务器
- 集成示例 →:可直接复制使用的 Python、Node.js 和 Go 代码
- 动态客户端注册 →:了解 DCR 在 Casdoor 中如何工作
- 自定义 Scope →:为你的工具定义细粒度权限
- Casdoor 的 MCP 服务器 →:使用 Casdoor 内置的 MCP 工具
引用
- MCP 规范:Authorization(2025 年 6 月)
- Casdoor MCP PRs: #5092 (PRM), #5094 (Metadata), #5097 (DCR), #5098 (Resource Indicators), #5100 (Consent)
- OAuth RFC:RFC 7591(DCR)、RFC 8707(资源指示符)、RFC 8414(元数据)