From 11c9d46dfca642e72d1c1a625401edee12429955 Mon Sep 17 00:00:00 2001 From: liuxiaohua Date: Thu, 9 Jan 2025 15:37:48 +0800 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20[2025-01-09]=20=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E6=96=B0=E7=89=B9=E6=80=A7=EF=BC=9A=E6=B7=BB=E5=8A=A0=E4=BC=81?= =?UTF-8?q?=E5=BE=AE=E7=99=BB=E5=BD=95=E6=99=BA=E5=9B=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 任务/今日任务.md | 6 +- 任务/周报.md | 7 +- 教程/20250109-内部程序企微登入接入指南.md | 100 ++++++++++++++++++++++ 杂项/test.http | 3 +- 4 files changed, 111 insertions(+), 5 deletions(-) create mode 100644 教程/20250109-内部程序企微登入接入指南.md diff --git a/任务/今日任务.md b/任务/今日任务.md index a972dab..8aaab32 100644 --- a/任务/今日任务.md +++ b/任务/今日任务.md @@ -15,9 +15,9 @@ ## 20241230 - 20250103 - [ ] ocr识别名片、语音转文字 这些先调研一下。后面会有相关的开发任务。 -- [ ] 开源支持SSO的管理后台 -- [ ] 企赋网关 - - [ ] 公司映射管理 +- [X] 开源支持SSO的管理后台 +- [X] 企赋网关 + - [X] 公司映射管理 - 导入模板 - 导入接口 - 查询接口 diff --git a/任务/周报.md b/任务/周报.md index 93d415b..b8dcdbc 100644 --- a/任务/周报.md +++ b/任务/周报.md @@ -1,10 +1,15 @@ ## 20250106 - 20250110 - [X] [Yearning SSO接入](http://confluence.qifu.com/pages/viewpage.action?pageId=38508162) - [X] [Gitlab SSO接入](http://confluence.qifu.com/pages/viewpage.action?pageId=38508192) -- [ ] K8s健康检查接口集成。 +- [X] K8s健康检查接口集成。 - [ ] 集简云对接(需要付费后才能介入) - [X] 基础架子搭建 - [ ] 接口对接 +- [ ] 面试 +- 附加任务 + - [ ] starter-sso 封装 + - [ ] 国际电子面单下单测试 + - [ ] 物流轨迹字段完善 ## 20241230 - 20250103 diff --git a/教程/20250109-内部程序企微登入接入指南.md b/教程/20250109-内部程序企微登入接入指南.md new file mode 100644 index 0000000..3fea24d --- /dev/null +++ b/教程/20250109-内部程序企微登入接入指南.md @@ -0,0 +1,100 @@ + + + + + + + + + + + + + + +# 单点登录使用说明 + +## 快速使用 +### 开放授权登录端点 +需要开放的端点列表: +- `/oauth/authorize/{client}` +- `/oauth/login/{client}` + +- 其中 `{client}` 为变量,所以 需要匹配开放 `/oauth/authorize` 及 `/oauth/login` 下的所有路径 +- 或者如果可以确定 `{client}`, 则开放替换 `{client}` 后的链接 + +### 编写 OauthLoginHandler 实现 +- 编写 `OauthLoginHandler` 实现登录流程,并注入 `Bean` +- 示例: + +```java +import com.alibaba.fastjson.JSONObject; + +public class DefaultOauthLoginHandler implements OauthLoginHandler { + + @Override + public Serializable loginSuccessHandle(AuthUser authUser, + YuanMengOauthProperties.OauthProperties oauthProperties) { + // TODO 获取用户名 + String username = authUser.getUsername(); + // TODO 查询用户 + User user = xxxDao.selectUserByUsername(username); + // TODO 业务登录逻辑 + String token = xxxLoginService.login(user); + // TODO 组装登录结果 + JSONObject loginResult = new JSONObject(); + loginResult.put("token", token); + // 返回结果 + return loginResult; + } + +} +``` + +### 配置文件配置 +```yaml +yuanmeng: + starter: + oauth: + config-map: + #- 自定义 {client} + customClient: + #- idp 类型 + auth-source: KEYCLOAK + #- Keycloak 客户端ID + client-id: "xxx" + #- Keycloak 客户端Secret + client-secret: "secret" + scopes: + - openid + - profile + - email + #- 某个界面或者直接请求该服务后端接口:http://xxx/oauth/login/{client} + #- 这边的 {client} 为 customClient + redirect-uri: "某个界面或者直接:http://xxx/oauth/login/customClient" + #- 当 redirect-uri 配置为后端接口时需要配置, + #- 登录成功后会把登录结果拼接到这个链接后面进行跳转 + #- 配置后请求 login 接口会根据这个链接做跳转,如果 redirect-uri 有页面承接这边就不需要配置 + login-after-redirect-uri: "" +``` + +### 前端处理 +#### 方案一:授权承接界面 +- 前端添加一个界面来做跳转界面,并把界面链接配置到 `redirect-uri` 上 +- 跳转界面将路径接收到的参数通过登录链接进行后端`GET`请求。例如 `GET http://xxx/oauth/login/{client}` +- 请求结果为登录信息,根据请求结果做对应处理就行 + +#### 方案二:登录成功处理界面 +- 后端直接把 `redirect-uri` 配置为登录接口 `http://xxx/oauth/login/{client}` +- 前端给一个可以承接登录成功信息处理的界面 +- 后端将页面链接配置到 `login-after-redirect-uri` 中 +- 前端在页面中解析对应登录信息进行处理 \ No newline at end of file diff --git a/杂项/test.http b/杂项/test.http index debc12f..28b736c 100644 --- a/杂项/test.http +++ b/杂项/test.http @@ -14,4 +14,5 @@ Content-Type: application/json { "token": "8e07fe4a315366f5f67c45da8d3acadffbd6e216168e015da41ad8ee5b9a36ba%7C393ac3b0565395f36ec279f453aa460a7e530c504dc69fa3c2c055ce118e0175", "password": "liu@Texous.com" -} \ No newline at end of file +} +