为 MCPHub 配置身份认证和安全设置
# 基础认证凭据 AUTH_USERNAME=admin AUTH_PASSWORD=your-secure-password # JWT 设置 JWT_SECRET=your-jwt-secret-key JWT_EXPIRES_IN=24h
{ "auth": { "provider": "database", "database": { "url": "postgresql://user:pass@localhost:5432/mcphub", "userTable": "users" } } }
# 通过 API curl -X POST http://localhost:3000/api/auth/users \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $ADMIN_TOKEN" \ -d '{ "username": "newuser", "email": "user@example.com", "password": "securepassword", "role": "user" }'
# 添加用户到组 curl -X POST http://localhost:3000/api/groups/{groupId}/users \ -H "Authorization: Bearer $TOKEN" \ -d '{"userId": "user123"}'
{ "groupId": "dev-team", "permissions": { "servers": ["read", "write", "execute"], "tools": ["read", "execute"], "logs": ["read"], "config": ["read"] } }
// 获取认证令牌 const response = await fetch('/api/auth/login', { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify({ username: 'your-username', password: 'your-password', }), }); const { token } = await response.json(); // 在后续请求中使用令牌 const protectedResponse = await fetch('/api/servers', { headers: { Authorization: `Bearer ${token}`, }, });
# 生成新的 API 密钥 curl -X POST http://localhost:3000/api/auth/api-keys \ -H "Authorization: Bearer $TOKEN" \ -d '{ "name": "Integration Key", "permissions": ["servers:read", "servers:write"], "expiresAt": "2024-12-31T23:59:59.000Z" }'
server { listen 443 ssl http2; server_name mcphub.example.com; ssl_certificate /path/to/certificate.crt; ssl_certificate_key /path/to/private.key; location / { proxy_pass http://localhost:3000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } }
// 会话配置 { "session": { "secret": "your-session-secret", "secure": true, // 生产环境中需要 HTTPS "httpOnly": true, "maxAge": 86400000, // 24 小时 "sameSite": "strict" } }
{ "rateLimit": { "windowMs": 900000, // 15 分钟 "max": 100, // 每个 IP 限制 100 个请求 "message": "请求过于频繁,请稍后再试", "standardHeaders": true, "legacyHeaders": false } }
# 启用 MFA curl -X POST http://localhost:3000/api/auth/mfa/enable \ -H "Authorization: Bearer $TOKEN" \ -d '{ "type": "totp", "appName": "MCPHub" }'
// 登录时验证 MFA const loginResponse = await fetch('/api/auth/login', { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify({ username: 'admin', password: 'password', mfaCode: '123456', // 来自认证器应用的 6 位数字 }), });
{ "audit": { "enabled": true, "logLevel": "info", "events": [ "login", "logout", "password_change", "role_change", "permission_change", "server_access", "config_change" ], "storage": { "type": "database", "retention": "90d" } } }
# 获取审计日志 curl -X GET "http://localhost:3000/api/audit/logs?startDate=2024-01-01&endDate=2024-01-31" \ -H "Authorization: Bearer $TOKEN"
{ "passwordPolicy": { "minLength": 12, "requireUppercase": true, "requireLowercase": true, "requireNumbers": true, "requireSpecialChars": true, "preventCommonPasswords": true, "preventReuse": 5, // 防止重复使用最近 5 个密码 "maxAge": 7776000 // 90 天后过期 } }
# 检查令牌有效期 curl -X GET http://localhost:3000/api/auth/verify \ -H "Authorization: Bearer $TOKEN"
# 检查用户权限 curl -X GET http://localhost:3000/api/auth/permissions \ -H "Authorization: Bearer $TOKEN"
# 设置环境变量 export DEBUG=auth:* export LOG_LEVEL=debug # 启动服务器 npm start