From 1a89be8daa7a7c5fdedddfa1c701150befc66d9e Mon Sep 17 00:00:00 2001 From: click33 <2393584716@qq.com> Date: Thu, 12 Dec 2024 09:58:17 +0800 Subject: [PATCH] =?UTF-8?q?docs(sso):=20=E2=80=9C=E4=B8=8D=E5=90=8C=20SSO?= =?UTF-8?q?=20Client=20=E9=85=8D=E7=BD=AE=E4=B8=8D=E5=90=8C=E7=A7=98?= =?UTF-8?q?=E9=92=A5=E2=80=9D=20=E7=AB=A0=E8=8A=82=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E9=83=A8=E5=88=86=E5=BC=82=E5=B8=B8=E7=9A=84=E5=A4=84=E7=90=86?= =?UTF-8?q?=E6=96=B9=E6=A1=88=E6=8F=90=E7=A4=BA=EF=BC=8Cfix:=20#IAFZXL?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sa-token-doc/sso/sso-diff-key.md | 41 +++++++++++++++++++++++++++++++- 1 file changed, 40 insertions(+), 1 deletion(-) diff --git a/sa-token-doc/sso/sso-diff-key.md b/sa-token-doc/sso/sso-diff-key.md index 17fb0344..17386a5e 100644 --- a/sa-token-doc/sso/sso-diff-key.md +++ b/sa-token-doc/sso/sso-diff-key.md @@ -114,6 +114,45 @@ public class CustomSaSsoServerTemplate extends SaSsoServerTemplate { } ``` -至此完成,其它代码一切照旧。 +至此完成。 + + +### 3、其它注意点 + +有同学反馈,集成 “不同 SSO Client 配置不同秘钥” 模式后,客户端发起调用 `/sso/getData` 调用时会报如下错误: + +``` +无效签名:5a7fc42836deba12d96527d43c1301ea +``` + +或者: +``` +参与参数签名的秘钥不可为空 +``` + +这大概率是因为在 sso-server 端的 `/sso/getData` 接口在校验签名时忘了加 client 参数导致的,修改为如下代码即可: + +``` java +// 示例:获取数据接口(用于在模式三下,为 client 端开放拉取数据的接口) +@RequestMapping("/sso/getData") +public SaResult getData(String apiType, String loginId) { + System.out.println("---------------- 获取数据 ----------------"); + System.out.println("apiType=" + apiType); + System.out.println("loginId=" + loginId); + + // ↓↓↓ 重点代码 ↓↓↓ + // 校验签名:只有拥有正确秘钥发起的请求才能通过校验 + String client = SaHolder.getRequest().getHeader("client"); + SaSsoServerProcessor.instance.ssoServerTemplate.getSignTemplate(client).checkRequest(SaHolder.getRequest()); + // ↑↑↑ 重点代码 ↑↑↑ + + // 自定义返回结果(模拟) + return SaResult.ok() + .set("id", loginId) + .set("name", "LinXiaoYu") + .set("sex", "女") + .set("age", 18); +} +```