概述
MCPHub 提供灵活的身份认证机制来保护您的 MCP 服务器管理平台。系统支持多种身份认证方法和基于角色的访问控制。Better Auth(GitHub / Google / 本地 OIDC)
MCPHub 可以通过 Better Auth 为 Dashboard 提供第三方登录。当前支持:- GitHub
- 本地 OIDC Provider(例如 Keycloak、Authentik、Dex)
- 配置
DB_URL(Better Auth 当前依赖 PostgreSQL,会话不支持纯文件模式) - 配置 Better Auth 启动参数并重启 MCPHub
- 为对应登录方式提供客户端凭据
systemConfig.auth.betterAuth(mcp_settings.json 或数据库系统配置)。优先级如下:
BETTER_AUTH_*环境变量systemConfig.auth.betterAuth- 默认值
BETTER_AUTH_ENABLEDBETTER_AUTH_URLBETTER_AUTH_BASE_PATHBETTER_AUTH_TRUSTED_ORIGINSBETTER_AUTH_GOOGLE_ENABLED+GOOGLE_CLIENT_ID/GOOGLE_CLIENT_SECRETBETTER_AUTH_GITHUB_ENABLED+GITHUB_CLIENT_ID/GITHUB_CLIENT_SECRETBETTER_AUTH_OIDC_ENABLEDBETTER_AUTH_OIDC_PROVIDER_IDBETTER_AUTH_OIDC_DISCOVERY_URL(兼容别名:OIDC_DISCOVERY_URL)BETTER_AUTH_OIDC_SCOPESBETTER_AUTH_OIDC_PKCEBETTER_AUTH_OIDC_PROMPTOIDC_CLIENT_ID/OIDC_CLIENT_SECRET
systemConfig.auth.betterAuth.providers.oidc 中配置:
enabledproviderIddiscoveryUrl- 可选的
scopes、pkce、prompt
discoveryUrl 应指向 OIDC Provider 的 /.well-known/openid-configuration。如果仍然使用配置文件插值,OIDC_DISCOVERY_URL 也会继续生效。
如果 Dashboard 通过不同的公网来源发起登录,请设置 BETTER_AUTH_TRUSTED_ORIGINS(或 systemConfig.auth.betterAuth.trustedOrigins)来允许该来源。如果没有显式配置 trustedOrigins,MCPHub 会自动信任 BETTER_AUTH_URL 和 systemConfig.install.baseUrl 的来源。
当 OIDC Provider 可用时,登录页会显示“使用 OIDC 登录”按钮。
默认挂载路径是 ${BASE_PATH}/api/auth/better;如果需要改路径,可以使用 BETTER_AUTH_BASE_PATH,或者在 systemConfig.auth.betterAuth.basePath 中提供后备值。
本地用户映射规则
Better Auth 登录成功后,MCPHub 会把会话映射回本地用户:- 优先使用
email - 其次使用
name - 最后回退到 provider 返回的
id
username,MCPHub 会自动创建一个非管理员用户。
OIDC / GitHub / Google 登录都不会自动授予管理员权限。只有本地已存在同名且 isAdmin=true 的用户,映射后才会拥有管理员权限。
身份认证方法
基于环境变量的认证
使用环境变量配置基础认证:数据库认证
对于生产环境部署,启用基于数据库的用户管理:用户管理
创建用户
通过管理界面或 API 创建用户:用户角色
MCPHub 支持基于角色的访问控制:- 管理员: 完整系统访问权限、用户管理、服务器配置
- 管理者: 服务器管理、组管理、监控
- 用户: 在分配组内的基本服务器访问权限
- 查看者: 对分配资源的只读访问权限
基于组的访问控制
将用户分配到组
组权限
配置组级别权限:API 认证
JWT 令牌认证
API 密钥认证
为系统集成生成 API 密钥:安全设置
HTTPS 配置
为生产环境启用 HTTPS:会话安全
配置安全的会话设置:速率限制
实施 API 速率限制:多因素认证 (MFA)
启用 TOTP
为管理员帐户启用基于时间的一次性密码:验证 MFA 代码
审计日志
启用审计日志
跟踪所有认证和授权事件:查看审计日志
密码策略
配置密码要求
故障排除
常见认证问题
-
JWT 令牌过期
-
权限被拒绝
-
会话问题
- 清除浏览器 cookies
- 检查会话配置
- 验证服务器时间同步
调试认证流程
启用调试日志:安全最佳实践
- 定期更新凭据: 定期轮换 JWT 密钥和 API 密钥
- 最小权限原则: 只授予用户执行其任务所需的最小权限
- 监控异常活动: 设置警报以检测可疑的登录模式
- 备份配置: 定期备份认证配置和用户数据
- 安全更新: 保持 MCPHub 和依赖项的最新状态