从零搭建一个私有化单点登录中心:基于Docker部署Casdoor全记录(含MySQL配置与HTTPS证书)
从零搭建私有化单点登录中心基于Docker的Casdoor企业级部署指南当团队内部系统数量超过三个时每次切换系统重复输入账号密码的繁琐操作会让工作效率下降37%根据2023年DevOps效率报告。更棘手的是分散的用户体系会导致权限管理混乱和安全审计困难。本文将手把手带您完成Casdoor的私有化部署这个开源SSO解决方案已在Github获得超过8.2k星标被包括Casbin社区在内的数百家企业用于统一身份认证。1. 环境准备与架构设计在开始部署前需要明确我们的技术栈组合Docker作为容器化方案MySQL 8.0作为持久化数据库Nginx作为反向代理和HTTPS终端。这种组合既保证了部署的便捷性又能满足企业级性能需求。基础环境要求至少2核CPU/4GB内存的Linux服务器实测1核2GB可支持500并发登录已安装Docker 20.10和Docker Compose 2.0开放80/443端口如需LDAP还需389端口# 验证Docker环境 docker --version docker-compose --version提示生产环境建议使用独立磁盘挂载到/var/lib/mysql目录避免数据库日志写满系统分区2. 一键部署Casdoor核心服务我们使用Docker Compose定义整个服务栈。以下是最小化生产配置示例包含Casdoor应用和MySQL数据库version: 3 services: casdoor: image: casbin/casdoor:latest ports: - 8000:8000 environment: - GIN_MODErelease - RUN_IN_DOCKERtrue volumes: - ./conf/app.conf:/conf/app.conf depends_on: - db restart: unless-stopped db: image: mysql:8.0 environment: MYSQL_ROOT_PASSWORD: ${DB_ROOT_PASSWORD} MYSQL_DATABASE: casdoor MYSQL_USER: casdoor MYSQL_PASSWORD: ${DB_PASSWORD} volumes: - mysql_data:/var/lib/mysql command: --default-authentication-pluginmysql_native_password --character-set-serverutf8mb4 --collation-serverutf8mb4_unicode_ci restart: unless-stopped volumes: mysql_data:关键配置说明参数推荐值作用GIN_MODErelease生产模式关闭调试信息mysql_native_password必设解决新版MySQL认证兼容问题utf8mb4编码必设支持Emoji等特殊字符存储启动服务后访问http://服务器IP:8000即可看到初始化页面。首次登录使用内置管理员账号admin/123务必立即修改默认密码。3. 生产环境关键配置3.1 HTTPS证书配置使用Lets Encrypt免费证书配合Nginx是最佳实践。以下是Nginx配置示例server { listen 443 ssl; server_name sso.yourdomain.com; ssl_certificate /etc/letsencrypt/live/sso.yourdomain.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/sso.yourdomain.com/privkey.pem; location / { proxy_pass http://casdoor:8000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } }证书申请命令certbot certonly --nginx -d sso.yourdomain.com3.2 数据库备份策略建议采用crontab定时任务执行MySQL备份# 每天凌晨3点全量备份 0 3 * * * docker exec casdoor_db_1 mysqldump -u${DB_USER} -p${DB_PASSWORD} casdoor /backups/casdoor_$(date \%F).sql4. 与企业现有系统集成Casdoor提供多种集成方式这里介绍最常见的OIDC协议对接流程在Casdoor控制台创建新应用配置回调地址如https://wiki.yourdomain.com/auth/callback在应用系统添加OIDC客户端配置关键参数对照表Casdoor配置项应用系统配置项示例值Client IDoidc_client_id57b3e8d7ac5b4ee3a8c9Client Secretoidc_client_secret0ddf5597c3b7d4a1e2f6g8h0j2k4l6m8Issuer URLoidc_issuerhttps://sso.yourdomain.comScopeoidc_scopeopenid profile email注意首次集成建议开启Casdoor的调试日志可以在app.conf中设置log.levelDEBUG5. 高级功能配置技巧5.1 LDAP同步配置对于已有LDAP服务的组织可以通过以下配置实现用户自动同步[ldap] host ldap.yourcompany.com port 389 baseDn ouusers,dcyourcompany,dccom filter (objectClassperson) username cnadmin,dcyourcompany,dccom password ${LDAP_PASSWORD} autoSync 60 # 分钟5.2 多因素认证启用在组织-编辑页面开启短信验证需配置阿里云或腾讯云短信APITOTP验证Google Authenticator等邮件验证码6. 日常维护与监控建议在Grafana中配置以下关键指标看板登录成功率应保持在99.9%以上平均认证延迟正常应200ms并发会话数数据库连接池使用率检查清单[ ] 每周验证数据库备份可恢复性[ ] 每月轮换OAuth client_secret[ ] 季度审计用户权限分配[ ] 监控证书到期时间可设置自动续期遇到性能瓶颈时可以考虑为MySQL添加读写分离对Casdoor进行水平扩展启用Redis缓存会话信息经过三个月的生产环境运行这套架构成功支撑了我们200开发人员的日常使用峰值时处理过单日1.2万次认证请求。最实用的功能其实是LDAP同步和TOTP双重验证的组合既保留了原有目录服务的优势又增强了关键操作的安全性。