### 样本中心需求 - 功能定义: 定义样本中心 LQAdminPlatform(后端) 、LQAdminFront(前端) - 去除:统一认证平台 、应用管理 模块功能逻辑 (包括:后端和前端) - 前端界面标题调整为:四川路桥样本中心 - 增加:样本中心接入单点登录 , 其中 SSO_BASE_URL、 CLIENT_ID、CLIENT_SECRET、REDIRECT_URI 配置项 - SSO_BASE_URL(统一认证平台URL地址):http://192.168.92.61:8200 - CLIENT_ID(应用key App Key): WviiGL8KQE20tQhmhQPQhhJ5QpFK51F6 - CLIENT_SECRET(应用密钥App Secret): 9WXP88hEHJiHRSiUdmx7ip5oQPzY0bnJNsEswQoO4sk6juCplyJTcnAiZsv7e3lJ - REDIRECT_URI(回调地址):http://localhost:8000/auth/callback - 获取授权码:http://192.168.92.61:8200/oauth/authorize?client_id=WviiGL8KQE20tQhmhQPQhhJ5QpFK51F6&redirect_uri=http://localhost:8000/auth/callback&response_type=code&scope=read%20write - 获取Access Token:http://192.168.92.61:8200/oauth/token?client_id=WviiGL8KQE20tQhmhQPQhhJ5QpFK51F6&client_secret=9WXP88hEHJiHRSiUdmx7ip5oQPzY0bnJNsEswQoO4sk6juCplyJTcnAiZsv7e3lJ&grant_type=authorization_code& - 获取用户信息:http://192.168.92.61:8200/oauth/userinfo ### 统一认证平台 - 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 配置数据?