# Casdoor SSO 单点登录 Skill 本 skill 提供在 Go + go-zero 项目中集成 Casdoor SSO 的完整指南和代码模板。 ## 适用场景 - 需要统一身份认证的多系统环境 - 外部人员(监管、巡检、审计)需要访问系统 - 已有 Casdoor 身份中心,需要对接新系统 ## 核心特点 - 支持本地用户 + Casdoor 用户混合模式 - 自动用户创建(JIT Provision) - JWT Token 本地签发 - 美观的回调页面 ## 快速开始 ### 1. 安装依赖 ```bash go get github.com/casdoor/casdoor-go-sdk go get github.com/golang-jwt/jwt/v5 ``` ### 2. 配置文件 ```yaml Casdoor: Endpoint: https://your-casdoor-domain.com ClientId: your-client-id ClientSecret: your-client-secret Organization: your-org Application: your-app RedirectUrl: http://localhost:8888/api/v1/auth/callback JwtPublicKey: | -----BEGIN CERTIFICATE----- ... -----END CERTIFICATE----- JWT: Secret: your-jwt-secret Expire: 86400 ``` ### 3. 核心代码 - [配置结构](snippets/config.md) - Config 结构定义 - [Casdoor 客户端](snippets/casdoorx.md) - SDK 封装 - [JWT 处理](snippets/jwtx.md) - Token 签发验证 - [回调逻辑](snippets/callback.md) - 登录回调处理 - [用户模型](snippets/model.md) - GORM 用户模型 ## 完整流程 1. 前端请求 `/api/v1/auth/login-url` 获取登录链接 2. 用户跳转到 Casdoor 登录页面 3. 登录成功后重定向到回调地址 4. 后端处理回调,交换 Token,创建用户 5. 返回本地 JWT Token 6. 前端使用 Token 访问受保护接口 ## 注意事项 - 生产环境必须使用 HTTPS - JWT Secret 需要安全保管 - Casdoor 证书需要定期更新 - 建议使用 state 参数防止 CSRF ## 参考 - [Casdoor 官方文档](https://casdoor.org/docs/overview) - [go-zero 文档](https://go-zero.dev)