Casdoor SSO 身份认证平台

Casdoor 是由 Casbin 社区开发的开源 SSO(单点登录)身份认证平台,使用 Go 和 React 构建。它支持 OAuth 2.0、OIDC、SAML、LDAP 等多种认证协议,内置了丰富的第三方登录提供者(GitHub、Google、微信等),并提供了美观的管理界面。Casdoor 非常适合需要为多个应用提供统一登录服务的场景。

一、系统要求

  • 操作系统:Ubuntu 20.04+(推荐 Ubuntu 22.04)。
  • 内存:至少 1GB,建议 2GB。
  • Docker:需要预先安装 Docker 和 Docker Compose

二、Docker Compose 部署

mkdir -p /opt/casdoor && cd /opt/casdoor

cat > docker-compose.yml <<'EOF'
version: '3.8'

services:
  casdoor:
    image: casbin/casdoor:latest
    container_name: casdoor
    restart: always
    ports:
      - "127.0.0.1:8000:8000"
    environment:
      - RUNNING_IN_DOCKER=true
    volumes:
      - ./conf:/conf
    depends_on:
      db:
        condition: service_healthy

  db:
    image: mysql:8.0
    container_name: casdoor-db
    restart: always
    environment:
      - MYSQL_ROOT_PASSWORD=CasdoorDBPass123
      - MYSQL_DATABASE=casdoor
    volumes:
      - casdoor-db:/var/lib/mysql
    healthcheck:
      test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
      interval: 10s
      timeout: 5s
      retries: 5

volumes:
  casdoor-db:
EOF

2.1 创建配置文件

mkdir -p /opt/casdoor/conf
cat > /opt/casdoor/conf/app.conf <<'EOF'
appname = casdoor
httpport = 8000
runmode = prod
copyrequestbody = true
driverName = mysql
dataSourceName = root:CasdoorDBPass123@tcp(db:3306)/casdoor?charset=utf8mb4
dbName = casdoor
tableNamePrefix =
showSql = false
redisEndpoint =
defaultStorageProvider =
isCloudIntranet = false
authState = "casdoor"
socks5Proxy = ""
verificationCodeTimeout = 10
initScore = 0
logPostOnly = true
origin = "https://auth.your-domain.com"
staticBaseUrl = "https://cdn.casbin.org"
EOF

2.2 启动服务

docker compose up -d
docker compose logs -f casdoor

三、Nginx 反向代理

cat > /etc/nginx/sites-available/casdoor <<'EOF'
server {
    listen 443 ssl http2;
    server_name auth.your-domain.com;

    ssl_certificate /etc/letsencrypt/live/auth.your-domain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/auth.your-domain.com/privkey.pem;

    location / {
        proxy_pass http://127.0.0.1:8000;
        proxy_http_version 1.1;
        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;
    }
}
EOF

ln -sf /etc/nginx/sites-available/casdoor /etc/nginx/sites-enabled/
nginx -t && systemctl reload nginx

四、首次配置

在浏览器中访问 https://auth.your-domain.com,使用默认管理员账号登录:

  • 用户名:admin
  • 密码:123

重要:首次登录后请立即修改管理员密码。

五、创建应用

在管理界面中创建新的 OAuth 应用:

  • 进入"Applications"页面,点击"Add"创建新应用。
  • 填写应用名称、描述和回调 URL。
  • 选择认证协议(OAuth 2.0 或 OIDC)。
  • 记录生成的 Client ID 和 Client Secret。

六、配置第三方登录

Casdoor 支持众多第三方身份提供者。在"Providers"页面可以配置:

  • 社交登录:GitHub、Google、微信、QQ、微博等。
  • 企业登录:LDAP、SAML、CAS。
  • 邮件/短信:用于验证码登录和通知。

以 GitHub OAuth 为例:

# 在 GitHub 创建 OAuth App 后,将 Client ID 和 Client Secret 填入 Casdoor
# Authorization callback URL 填写:
# https://auth.your-domain.com/callback

七、集成到应用

Casdoor 提供了多种语言的 SDK:

# Python SDK
pip install casdoor

# Node.js SDK
npm install casdoor-nodejs-sdk

# Go SDK
go get github.com/casdoor/casdoor-go-sdk

Python 集成示例:

from casdoor import CasdoorSDK

sdk = CasdoorSDK(
    endpoint='https://auth.your-domain.com',
    client_id='YOUR_CLIENT_ID',
    client_secret='YOUR_CLIENT_SECRET',
    certificate='YOUR_CERTIFICATE',
    org_name='built-in',
    application_name='your-app'
)

# 获取登录 URL
login_url = sdk.get_auth_link(
    redirect_uri='https://your-app.com/callback',
    state='random-state-string'
)

# 用授权码获取 Token
token = sdk.get_oauth_token(code='authorization_code')

# 获取用户信息
user = sdk.parse_jwt_token(token['access_token'])

八、用户管理

通过 Casdoor 管理界面或 API 管理用户:

# 获取用户列表
curl -X GET "https://auth.your-domain.com/api/get-users?owner=built-in" \
  -H "Authorization: Basic $(echo -n 'CLIENT_ID:CLIENT_SECRET' | base64)"

# 创建用户
curl -X POST "https://auth.your-domain.com/api/add-user" \
  -H "Authorization: Basic $(echo -n 'CLIENT_ID:CLIENT_SECRET' | base64)" \
  -H "Content-Type: application/json" \
  -d '{
    "owner": "built-in",
    "name": "newuser",
    "password": "UserPass123",
    "email": "user@example.com"
  }'

九、数据备份

# 备份 MySQL 数据
docker exec casdoor-db mysqldump -uroot -pCasdoorDBPass123 casdoor > /opt/backups/casdoor_$(date +%Y%m%d).sql

# 定时备份
crontab -e
0 3 * * * docker exec casdoor-db mysqldump -uroot -pCasdoorDBPass123 casdoor > /opt/backups/casdoor_$(date +\%Y\%m\%d).sql 2>&1

十、常见问题

数据库连接失败

确保 MySQL 容器已健康启动:

docker compose logs db
docker compose restart casdoor

第三方登录回调失败

检查 origin 配置是否与实际访问域名一致,回调 URL 是否正确。

总结

Casdoor 是功能丰富且易于使用的 SSO 平台,支持多种认证协议和第三方登录。在搬瓦工 VPS 上使用 Docker 可以快速搭建统一的身份认证服务。选购搬瓦工 VPS 请参考 全部方案,购买时使用优惠码 NODESEEK2026 可享受 6.77% 折扣。相关平台:Logto 教程Authentik 教程Zitadel 教程

关于本站

搬瓦工VPS中文网(bwgvps.com)是非官方中文信息站,整理搬瓦工的方案、优惠和教程。我们不销售主机,不提供技术服务。

新手必读
搬瓦工优惠码

NODESEEK2026(优惠 6.77%)

购买时填入即可抵扣。