样本中心需求.md 7.5 KB

样本中心需求

统一认证平台

  • AI中台管理:统一认证平台(8200 )后端:LQAI-middle-platform, 前端:LQAI-middle-platform-front
  • 样本中心: 子应用 后端:LQAdminPlatform 前端:LQAdminFront
  • 要求: 统一认证平台(统一认证平台:8200)已经登录了,点击子应用图标(样本中心:8000) 直接跳转子应用首页 无需再次登录

● 方案B实现完成

我修改了4个文件,下面是完整的修改总结:


一、修改的文件

┌────────────────┬────────────────────────────────────────────────────┬───────────────────────────┐
│ 项目 │ 文件路径 │ 修改内容 │
├────────────────┼────────────────────────────────────────────────────┼───────────────────────────┤
│ 统一认证平台后 │ LQAI-middle-platform/src/app/schemas/auth.py │ 新增 SSORedirectRequest │
│ 端 │ │ Schema │
├────────────────┼────────────────────────────────────────────────────┼───────────────────────────┤
│ 统一认证平台后 │ │ 新增 POST │
│ 端 │ LQAI-middle-platform/src/views/auth_view.py │ /api/v1/auth/sso-redirect │
│ │ │ 接口 │
├────────────────┼────────────────────────────────────────────────────┼───────────────────────────┤
│ 统一认证平台前 │ │ 新增 │
│ 端 │ LQAI-middle-platform-front/src/api/auth.ts │ getSSORedirectUrl(appId) │
│ │ │ API 方法 │
├────────────────┼────────────────────────────────────────────────────┼───────────────────────────┤
│ │ │ 修改 │
│ 统一认证平台前 │ LQAI-middle-platform-front/src/views/dashboard/Ind │ handleAppClick:先请求 │
│ 端 │ ex.vue │ SSO 免登接口,失败则降级 │
│ │ │ 直接打开 │
└────────────────┴────────────────────────────────────────────────────┴───────────────────────────┘


二、SSO 免登流程(点击子应用后)

  1. 统一认证平台前端点击"样本中心" │ ▼
  2. 调用 POST /api/v1/auth/sso-redirect {app_id: "样本中心ID"} (携带当前登录用户的 Bearer Token) │ ▼
  3. 统一认证平台后端: ├── 验证用户已登录(JWT + Redis 校验) ├── 查询 t_sys_app 获取样本中心的 app_key、redirect_uris ├── 生成 OAuth2 授权码(一次性,10分钟有效) ├── 存入 Redis └── 返回 {redirect_url: "http://localhost:8000/auth/callback?code=xxx"} │ ▼
  4. 前端 window.open(redirect_url, '_blank') │ ▼
  5. 样本中心后端 /auth/callback?code=xxx ├── 用 code 向统一认证平台换取 access_token ├── 用 access_token 获取用户信息 ├── 在本地查找/创建用户 ├── 生成本地 JWT token └── 重定向到前端 /oauth/callback?token=xxx&refresh_token=xxx │ ▼
  6. 样本中心前端 OAuthCallback.vue ├── 从 URL 提取 token 保存到本地 ├── 获取用户信息 └── 跳转到 /dashboard(首页)

整个流程用户无需输入密码,无感知完成登录。


三、部署前需要确认的配置

  1. 样本中心在统一认证平台的注册信息(t_sys_app 表):
    • 首页:
    • app_key:样本中心的 client_id(需与样本中心 config.ini 的 CLIENT_ID 一致)
    • app_secret:与样本中心 config.ini 的 CLIENT_SECRET 一致
    • redirect_uris:必须包含样本中心的回调地址,如 ["http://localhost:8000/auth/callback"]
    • is_active:必须为 1
    • scope:建议 ["profile", "email"]
  2. 样本中心 config.ini 的 SSO 配置: [sso] SSO_BASE_URL=http://192.168.92.61:8200 CLIENT_ID=样本中心在统一平台的client_id CLIENT_SECRET=样本中心在统一平台的client_secret REDIRECT_URI=http://localhost:8000/auth/callback FRONTEND_URL=http://localhost:3000 # 样本中心前端实际部署地址

四、降级机制

如果某个子应用没有配置 OAuth2 回调地址,前端会自动降级:接口返回错误后,仍会用原来的方式直接打开
home_url,不会影响其他应用的正常访问。


是否需要我进一步调整任何逻辑,或者帮你验证样本中心的 t_sys_app 配置数据?