diff --git a/README.md b/README.md index 1471ff5..2c4009f 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,39 @@ # 数字人民币教学仿真后端 -Java 17 / Spring Boot 4.1 / MySQL 8 / MyBatis-Plus DDD 脚手架。 +## 登录方式 -设置 `DIGITAL_RMB_DB_URL`、`DIGITAL_RMB_DB_USERNAME`、`DIGITAL_RMB_DB_PASSWORD`、`DIGITAL_RMB_JWT_SECRET`(至少 64 字符)、`DIGITAL_RMB_BOOTSTRAP_ADMIN_USERNAME`、`DIGITAL_RMB_BOOTSTRAP_ADMIN_PASSWORD` 后运行 `mvn spring-boot:run`。测试使用内存 H2:`mvn test`。 +- 主平台单点登录:主平台跳转至 `GET /api/v1/auth/sso?token=...`。后端以主平台教师或学生档案的 `add_time` 动态 HMAC 密钥验证 Token,生成一次性 `code` 并跳转至前端回调地址。 +- 独立访问:浏览器访问 `GET /api/v1/auth/cas/login`,跳转学校 CAS;回调校验成功后生成同样的一次性 `code`。 +- 会话兑换:`POST /api/v1/auth/session/exchange`,请求体为 `{"code":"..."}`,返回本系统访问 JWT 和刷新令牌。 -开发时以 `--spring.profiles.active=dev` 启动,控制台会打印 Swagger UI 地址:`http://localhost:8080/swagger-ui/index.html`;生产默认关闭 Swagger UI。 +本系统只接受教师和学生两类身份。平台账号与角色只能通过内部投影写入;没有用户、角色或用户角色的管理接口。 + +## 必需配置 + +生产环境通过环境变量配置: + +| 变量 | 说明 | +| --- | --- | +| `DIGITAL_RMB_DB_URL` | 本系统 MySQL JDBC 地址 | +| `DIGITAL_RMB_DB_USERNAME` | 本系统数据库账号 | +| `DIGITAL_RMB_DB_PASSWORD` | 本系统数据库密码 | +| `DIGITAL_RMB_JWT_SECRET` | 至少 64 字符的应用 JWT 密钥 | +| `DIGITAL_RMB_PLATFORM_DB_URL` | 主平台 MySQL JDBC 地址 | +| `DIGITAL_RMB_PLATFORM_DB_USERNAME` | 主平台只读数据库账号 | +| `DIGITAL_RMB_PLATFORM_DB_PASSWORD` | 主平台只读数据库密码 | +| `DIGITAL_RMB_CAS_LOGIN_URL` | 学校 CAS 登录地址 | +| `DIGITAL_RMB_CAS_VALIDATE_URL` | CAS `serviceValidate` 地址 | +| `DIGITAL_RMB_CAS_CALLBACK_URL` | 本系统固定 CAS 回调地址 | +| `DIGITAL_RMB_FRONTEND_CALLBACK_URL` | 前端接收一次性 code 的固定回调地址 | + +主平台数据库账号必须仅授予 `SELECT` 权限。不要将主平台 Token 写入日志、数据库或前端最终 URL。 + +## 本地运行 + +```powershell +mvn spring-boot:run -Dspring-boot.run.profiles=local -Dspring-boot.run.arguments=--server.port=8081 +``` + +本地 Swagger: + +生产环境不启用用户名/密码登录;仅 `local` 与 `test` 配置保留脚手架的 Bootstrap Admin 入口。