From 08659f1fa8cbff24fff94290511b177ec5800cdb Mon Sep 17 00:00:00 2001
From: click33 <2393584716@qq.com>
Date: Tue, 30 Apr 2024 08:34:30 +0800
Subject: [PATCH] =?UTF-8?q?=E6=95=B4=E4=BD=93=E9=87=8D=E6=9E=84=20sa-token?=
=?UTF-8?q?-sso=20=E6=A8=A1=E5=9D=97=EF=BC=8C=E5=B0=86=20server=20?=
=?UTF-8?q?=E7=AB=AF=E5=92=8C=20client=20=E7=AB=AF=E4=BB=A3=E7=A0=81?=
=?UTF-8?q?=E6=8B=86=E5=88=86?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../src/main/java/com/pj/h5/H5Controller.java | 4 +-
.../src/main/java/com/pj/sso/SsoConfig.java | 10 +-
.../java/com/pj/sso/SsoServerController.java | 4 +-
.../src/main/resources/app.yml | 5 +-
.../java/com/pj/sso/SsoClientController.java | 4 +-
.../src/main/resources/app.yml | 2 +-
.../src/main/java/com/pj/h5/H5Controller.java | 6 +-
.../java/com/pj/sso/SsoClientController.java | 4 +-
.../src/main/resources/app.yml | 2 +-
.../java/com/pj/sso/SaSsoAutoConfigure.java | 20 +-
.../java/com/pj/sso/SsoClientController.java | 25 +-
.../src/main/java/com/pj/sso/SsoConfig.java | 6 +-
.../src/main/resources/app.yml | 2 +-
.../src/main/java/com/pj/h5/H5Controller.java | 4 +-
.../java/com/pj/sso/SsoServerController.java | 21 +-
.../src/main/resources/application.yml | 2 +-
.../java/com/pj/SaSso1ClientApplication.java | 11 +-
.../java/com/pj/sso/SsoClientController.java | 11 +-
.../src/main/resources/application.yml | 8 +-
.../java/com/pj/SaSso2ClientApplication.java | 11 +-
.../src/main/java/com/pj/h5/H5Controller.java | 11 +-
.../java/com/pj/sso/SsoClientController.java | 9 +-
.../src/main/resources/application.yml | 7 +-
.../java/com/pj/SaSso3ClientApplication.java | 11 +-
.../java/com/pj/sso/SsoClientController.java | 16 +-
.../src/main/resources/application.yml | 15 +-
.../cn/dev33/satoken/config/SaSsoConfig.java | 585 ----------------
.../cn/dev33/satoken/sso/SaSsoManager.java | 66 +-
.../cn/dev33/satoken/sso/SaSsoProcessor.java | 511 --------------
.../cn/dev33/satoken/sso/SaSsoTemplate.java | 647 ------------------
.../satoken/sso/config/SaSsoClientConfig.java | 390 +++++++++++
.../satoken/sso/config/SaSsoServerConfig.java | 223 ++++++
.../sso/function/DoLoginHandleFunction.java | 32 +
.../sso/function/NotLoginViewFunction.java | 32 +
.../sso/function/SendHttpFunction.java | 32 +
.../function/TicketResultHandleFunction.java | 32 +
.../satoken/sso/model/SaSsoClientModel.java | 114 +++
.../sso/processor/SaSsoClientProcessor.java | 307 +++++++++
.../sso/processor/SaSsoProcessorHelper.java | 58 ++
.../sso/processor/SaSsoServerProcessor.java | 248 +++++++
.../sso/template/SaSsoClientTemplate.java | 206 ++++++
.../sso/template/SaSsoServerTemplate.java | 414 +++++++++++
.../satoken/sso/template/SaSsoTemplate.java | 85 +++
.../satoken/sso/{ => template}/SaSsoUtil.java | 106 +--
.../satoken/sso/{ => util}/SaSsoConsts.java | 6 +-
.../satoken/solon/sso/SaSsoAutoConfigure.java | 4 +-
.../satoken/spring/sso/SaSsoBeanInject.java | 54 +-
.../satoken/spring/sso/SaSsoBeanRegister.java | 30 +-
.../configure/inject/MySaSsoTemplate.java | 2 +-
49 files changed, 2441 insertions(+), 1974 deletions(-)
delete mode 100644 sa-token-plugin/sa-token-sso/src/main/java/cn/dev33/satoken/config/SaSsoConfig.java
delete mode 100644 sa-token-plugin/sa-token-sso/src/main/java/cn/dev33/satoken/sso/SaSsoProcessor.java
delete mode 100644 sa-token-plugin/sa-token-sso/src/main/java/cn/dev33/satoken/sso/SaSsoTemplate.java
create mode 100644 sa-token-plugin/sa-token-sso/src/main/java/cn/dev33/satoken/sso/config/SaSsoClientConfig.java
create mode 100644 sa-token-plugin/sa-token-sso/src/main/java/cn/dev33/satoken/sso/config/SaSsoServerConfig.java
create mode 100644 sa-token-plugin/sa-token-sso/src/main/java/cn/dev33/satoken/sso/function/DoLoginHandleFunction.java
create mode 100644 sa-token-plugin/sa-token-sso/src/main/java/cn/dev33/satoken/sso/function/NotLoginViewFunction.java
create mode 100644 sa-token-plugin/sa-token-sso/src/main/java/cn/dev33/satoken/sso/function/SendHttpFunction.java
create mode 100644 sa-token-plugin/sa-token-sso/src/main/java/cn/dev33/satoken/sso/function/TicketResultHandleFunction.java
create mode 100644 sa-token-plugin/sa-token-sso/src/main/java/cn/dev33/satoken/sso/model/SaSsoClientModel.java
create mode 100644 sa-token-plugin/sa-token-sso/src/main/java/cn/dev33/satoken/sso/processor/SaSsoClientProcessor.java
create mode 100644 sa-token-plugin/sa-token-sso/src/main/java/cn/dev33/satoken/sso/processor/SaSsoProcessorHelper.java
create mode 100644 sa-token-plugin/sa-token-sso/src/main/java/cn/dev33/satoken/sso/processor/SaSsoServerProcessor.java
create mode 100644 sa-token-plugin/sa-token-sso/src/main/java/cn/dev33/satoken/sso/template/SaSsoClientTemplate.java
create mode 100644 sa-token-plugin/sa-token-sso/src/main/java/cn/dev33/satoken/sso/template/SaSsoServerTemplate.java
create mode 100644 sa-token-plugin/sa-token-sso/src/main/java/cn/dev33/satoken/sso/template/SaSsoTemplate.java
rename sa-token-plugin/sa-token-sso/src/main/java/cn/dev33/satoken/sso/{ => template}/SaSsoUtil.java (65%)
rename sa-token-plugin/sa-token-sso/src/main/java/cn/dev33/satoken/sso/{ => util}/SaSsoConsts.java (86%)
diff --git a/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso-server-solon/src/main/java/com/pj/h5/H5Controller.java b/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso-server-solon/src/main/java/com/pj/h5/H5Controller.java
index 566af4f3..d6b2649d 100644
--- a/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso-server-solon/src/main/java/com/pj/h5/H5Controller.java
+++ b/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso-server-solon/src/main/java/com/pj/h5/H5Controller.java
@@ -1,8 +1,8 @@
package com.pj.h5;
-import cn.dev33.satoken.sso.SaSsoConsts;
-import cn.dev33.satoken.sso.SaSsoUtil;
+import cn.dev33.satoken.sso.util.SaSsoConsts;
+import cn.dev33.satoken.sso.template.SaSsoUtil;
import cn.dev33.satoken.stp.StpUtil;
import cn.dev33.satoken.util.SaFoxUtil;
import cn.dev33.satoken.util.SaResult;
diff --git a/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso-server-solon/src/main/java/com/pj/sso/SsoConfig.java b/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso-server-solon/src/main/java/com/pj/sso/SsoConfig.java
index 1dacf1f1..a2618dcc 100644
--- a/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso-server-solon/src/main/java/com/pj/sso/SsoConfig.java
+++ b/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso-server-solon/src/main/java/com/pj/sso/SsoConfig.java
@@ -1,8 +1,8 @@
package com.pj.sso;
-import cn.dev33.satoken.config.SaSsoConfig;
import cn.dev33.satoken.dao.SaTokenDao;
import cn.dev33.satoken.dao.SaTokenDaoOfRedis;
+import cn.dev33.satoken.sso.config.SaSsoServerConfig;
import cn.dev33.satoken.stp.StpUtil;
import cn.dev33.satoken.util.SaResult;
import com.dtflys.forest.Forest;
@@ -27,15 +27,15 @@ public class SsoConfig {
// 配置SSO相关参数
@Bean
- public void configSso(SaSsoConfig sso) { //SaSsoConfig 已自动构建
+ public void configSso(SaSsoServerConfig ssoServer) { //SaSsoConfig 已自动构建
// 配置:未登录时返回的View
- sso.notLoginView = () -> {
+ ssoServer.notLoginView = () -> {
return new ModelAndView("sa-login.html");
};
// 配置:登录处理函数
- sso.doLoginHandle = (name, pwd) -> {
+ ssoServer.doLoginHandle = (name, pwd) -> {
// 此处仅做模拟登录,真实环境应该查询数据进行登录
if("sa".equals(name) && "123456".equals(pwd)) {
StpUtil.login(10001);
@@ -45,7 +45,7 @@ public class SsoConfig {
};
// 配置 Http 请求处理器 (在模式三的单点注销功能下用到,如不需要可以注释掉)
- sso.sendHttp = url -> {
+ ssoServer.sendHttp = url -> {
try {
// 发起 http 请求
System.out.println("------ 发起请求:" + url);
diff --git a/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso-server-solon/src/main/java/com/pj/sso/SsoServerController.java b/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso-server-solon/src/main/java/com/pj/sso/SsoServerController.java
index 36318606..babbdd87 100644
--- a/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso-server-solon/src/main/java/com/pj/sso/SsoServerController.java
+++ b/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso-server-solon/src/main/java/com/pj/sso/SsoServerController.java
@@ -1,7 +1,7 @@
package com.pj.sso;
-import cn.dev33.satoken.sso.SaSsoProcessor;
+import cn.dev33.satoken.sso.processor.SaSsoServerProcessor;
import org.noear.solon.annotation.Controller;
import org.noear.solon.annotation.Mapping;
@@ -22,6 +22,6 @@ public class SsoServerController {
*/
@Mapping("/sso/*")
public Object ssoRequest() {
- return SaSsoProcessor.instance.serverDister();
+ return SaSsoServerProcessor.instance.dister();
}
}
diff --git a/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso-server-solon/src/main/resources/app.yml b/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso-server-solon/src/main/resources/app.yml
index b8728cb5..2fde61a4 100644
--- a/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso-server-solon/src/main/resources/app.yml
+++ b/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso-server-solon/src/main/resources/app.yml
@@ -10,7 +10,7 @@ sa-token:
# domain: stp.com
# ------- SSO-模式二相关配置
- sso:
+ sso-server:
# Ticket有效期 (单位: 秒),默认五分钟
ticket-timeout: 300
# 所有允许的授权回调地址
@@ -22,7 +22,8 @@ sa-token:
# 是否打开模式三
isHttp: true
# 接口调用秘钥(用于SSO模式三的单点注销功能)
- secretkey: kQwIOrYvnXmSDkwEiFngrKidMcdrgKor
+ sign:
+ secret-key: kQwIOrYvnXmSDkwEiFngrKidMcdrgKor
# ---- 除了以上配置项,你还需要为 Sa-Token 配置http请求处理器(文档有步骤说明)
sa-token: #名字可以随意取
diff --git a/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso1-client-solon/src/main/java/com/pj/sso/SsoClientController.java b/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso1-client-solon/src/main/java/com/pj/sso/SsoClientController.java
index f6251b81..5acea49a 100644
--- a/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso1-client-solon/src/main/java/com/pj/sso/SsoClientController.java
+++ b/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso1-client-solon/src/main/java/com/pj/sso/SsoClientController.java
@@ -21,8 +21,8 @@ public class SsoClientController implements Render {
@Produces(MimeType.TEXT_HTML_VALUE)
@Mapping("/")
public String index() {
- String authUrl = SaSsoManager.getConfig().splicingAuthUrl();
- String solUrl = SaSsoManager.getConfig().splicingSloUrl();
+ String authUrl = SaSsoManager.getClientConfig().splicingAuthUrl();
+ String solUrl = SaSsoManager.getClientConfig().splicingSloUrl();
String str = "
Sa-Token SSO-Client 应用端
" +
"当前会话是否登录:" + StpUtil.isLogin() + "
" +
"登录 " +
diff --git a/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso1-client-solon/src/main/resources/app.yml b/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso1-client-solon/src/main/resources/app.yml
index 41924a90..04730349 100644
--- a/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso1-client-solon/src/main/resources/app.yml
+++ b/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso1-client-solon/src/main/resources/app.yml
@@ -5,7 +5,7 @@ server:
# Sa-Token 配置
sa-token:
# SSO-相关配置
- sso:
+ sso-client:
# SSO-Server端-单点登录授权地址
auth-url: http://sso.stp.com:9000/sso/auth
# SSO-Server端-单点注销地址
diff --git a/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso2-client-solon/src/main/java/com/pj/h5/H5Controller.java b/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso2-client-solon/src/main/java/com/pj/h5/H5Controller.java
index 1fbd1d87..c169b68a 100644
--- a/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso2-client-solon/src/main/java/com/pj/h5/H5Controller.java
+++ b/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso2-client-solon/src/main/java/com/pj/h5/H5Controller.java
@@ -1,7 +1,7 @@
package com.pj.h5;
-import cn.dev33.satoken.sso.SaSsoProcessor;
-import cn.dev33.satoken.sso.SaSsoUtil;
+import cn.dev33.satoken.sso.processor.SaSsoClientProcessor;
+import cn.dev33.satoken.sso.template.SaSsoUtil;
import cn.dev33.satoken.stp.StpUtil;
import cn.dev33.satoken.util.SaResult;
import org.noear.solon.annotation.Controller;
@@ -34,7 +34,7 @@ public class H5Controller implements Render {
// 根据ticket进行登录
@Mapping("/sso/doLoginByTicket")
public SaResult doLoginByTicket(String ticket) {
- Object loginId = SaSsoProcessor.instance.checkTicket(ticket, "/sso/doLoginByTicket");
+ Object loginId = SaSsoClientProcessor.instance.checkTicketByMode2Or3(ticket, "/sso/doLoginByTicket");
if(loginId != null) {
StpUtil.login(loginId);
return SaResult.data(StpUtil.getTokenValue());
diff --git a/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso2-client-solon/src/main/java/com/pj/sso/SsoClientController.java b/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso2-client-solon/src/main/java/com/pj/sso/SsoClientController.java
index edd3f8fe..76cbec98 100644
--- a/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso2-client-solon/src/main/java/com/pj/sso/SsoClientController.java
+++ b/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso2-client-solon/src/main/java/com/pj/sso/SsoClientController.java
@@ -1,7 +1,7 @@
package com.pj.sso;
-import cn.dev33.satoken.sso.SaSsoProcessor;
+import cn.dev33.satoken.sso.processor.SaSsoClientProcessor;
import cn.dev33.satoken.stp.StpUtil;
import cn.dev33.satoken.util.SaResult;
import org.noear.solon.annotation.Controller;
@@ -37,7 +37,7 @@ public class SsoClientController implements Render {
*/
@Mapping("/sso/*")
public Object ssoRequest() {
- return SaSsoProcessor.instance.clientDister();
+ return SaSsoClientProcessor.instance.dister();
}
// 全局异常拦截并转换
diff --git a/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso2-client-solon/src/main/resources/app.yml b/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso2-client-solon/src/main/resources/app.yml
index b2c6ff54..2a4e01ab 100644
--- a/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso2-client-solon/src/main/resources/app.yml
+++ b/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso2-client-solon/src/main/resources/app.yml
@@ -5,7 +5,7 @@ server:
# sa-token配置
sa-token:
# SSO-相关配置
- sso:
+ sso-client:
# SSO-Server端 统一认证地址
auth-url: http://sa-sso-server.com:9000/sso/auth
# auth-url: http://127.0.0.1:8848/sa-token-demo-sso-server-h5/sso-auth.html
diff --git a/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso3-client-solon/src/main/java/com/pj/sso/SaSsoAutoConfigure.java b/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso3-client-solon/src/main/java/com/pj/sso/SaSsoAutoConfigure.java
index 5b7a9cd4..2d625b4e 100644
--- a/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso3-client-solon/src/main/java/com/pj/sso/SaSsoAutoConfigure.java
+++ b/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso3-client-solon/src/main/java/com/pj/sso/SaSsoAutoConfigure.java
@@ -1,10 +1,9 @@
package com.pj.sso;
-import cn.dev33.satoken.config.SaSsoConfig;
import cn.dev33.satoken.sso.SaSsoManager;
-import cn.dev33.satoken.sso.SaSsoProcessor;
-import cn.dev33.satoken.sso.SaSsoTemplate;
-import cn.dev33.satoken.sso.SaSsoUtil;
+import cn.dev33.satoken.sso.config.SaSsoClientConfig;
+import cn.dev33.satoken.sso.processor.SaSsoClientProcessor;
+import cn.dev33.satoken.sso.template.SaSsoClientTemplate;
import org.noear.solon.annotation.Bean;
import org.noear.solon.annotation.Condition;
import org.noear.solon.annotation.Configuration;
@@ -25,7 +24,7 @@ public class SaSsoAutoConfigure {
* 获取 SSO 配置Bean
* */
@Bean
- public SaSsoConfig getConfig(@Inject(value = "${sa-token.sso}",required = false) SaSsoConfig ssoConfig) {
+ public SaSsoClientConfig getConfig(@Inject(value = "${sa-token.sso-client}",required = false) SaSsoClientConfig ssoConfig) {
return ssoConfig;
}
@@ -35,18 +34,17 @@ public class SaSsoAutoConfigure {
* @param saSsoConfig 配置对象
*/
@Bean
- public void setSaSsoConfig(@Inject(required = false) SaSsoConfig saSsoConfig) {
- SaSsoManager.setConfig(saSsoConfig);
+ public void setSaSsoConfig(@Inject(required = false) SaSsoClientConfig saSsoConfig) {
+ SaSsoManager.setClientConfig(saSsoConfig);
}
/**
* 注入 Sa-Token-SSO 单点登录模块 Bean
*
- * @param ssoTemplate saSsoTemplate对象
+ * @param ssoClientTemplate ssoClientTemplate对象
*/
@Bean
- public void setSaSsoTemplate(@Inject(required = false) SaSsoTemplate ssoTemplate) {
- SaSsoUtil.ssoTemplate = ssoTemplate;
- SaSsoProcessor.instance.ssoTemplate = ssoTemplate;
+ public void setSaSsoClientTemplate(@Inject(required = false) SaSsoClientTemplate ssoClientTemplate) {
+ SaSsoClientProcessor.instance.ssoClientTemplate = ssoClientTemplate;
}
}
diff --git a/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso3-client-solon/src/main/java/com/pj/sso/SsoClientController.java b/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso3-client-solon/src/main/java/com/pj/sso/SsoClientController.java
index 7567de9f..8f3afeef 100644
--- a/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso3-client-solon/src/main/java/com/pj/sso/SsoClientController.java
+++ b/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso3-client-solon/src/main/java/com/pj/sso/SsoClientController.java
@@ -1,7 +1,7 @@
package com.pj.sso;
-import cn.dev33.satoken.sso.SaSsoProcessor;
-import cn.dev33.satoken.sso.SaSsoUtil;
+import cn.dev33.satoken.sso.processor.SaSsoClientProcessor;
+import cn.dev33.satoken.sso.template.SaSsoUtil;
import cn.dev33.satoken.stp.StpUtil;
import cn.dev33.satoken.util.SaResult;
import org.noear.solon.annotation.Controller;
@@ -11,6 +11,9 @@ import org.noear.solon.boot.web.MimeType;
import org.noear.solon.core.handle.Context;
import org.noear.solon.core.handle.Render;
+import java.util.HashMap;
+import java.util.Map;
+
/**
* Sa-Token-SSO Client端 Controller
* @author click33
@@ -37,15 +40,21 @@ public class SsoClientController implements Render {
*/
@Mapping("/sso/*")
public Object ssoRequest() {
- return SaSsoProcessor.instance.clientDister();
+ return SaSsoClientProcessor.instance.dister();
}
// 查询我的账号信息
- @Mapping("/sso/myinfo")
- public Object myinfo() {
- Object userinfo = SaSsoUtil.getUserinfo(StpUtil.getLoginId());
- System.out.println("--------info:" + userinfo);
- return userinfo;
+ @Mapping("/sso/myInfo")
+ public Object myInfo() {
+ // 组织请求参数
+ Map map = new HashMap<>();
+ map.put("apiType", "userinfo");
+ map.put("loginId", StpUtil.getLoginId());
+
+ // 发起请求
+ Object resData = SaSsoUtil.getData(map);
+ System.out.println("sso-server 返回的信息:" + resData);
+ return resData;
}
// 全局异常拦截并转换
diff --git a/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso3-client-solon/src/main/java/com/pj/sso/SsoConfig.java b/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso3-client-solon/src/main/java/com/pj/sso/SsoConfig.java
index 4669b38b..bb8a0a85 100644
--- a/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso3-client-solon/src/main/java/com/pj/sso/SsoConfig.java
+++ b/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso3-client-solon/src/main/java/com/pj/sso/SsoConfig.java
@@ -1,6 +1,6 @@
package com.pj.sso;
-import cn.dev33.satoken.config.SaSsoConfig;
+import cn.dev33.satoken.sso.config.SaSsoClientConfig;
import com.dtflys.forest.Forest;
import org.noear.solon.annotation.Bean;
import org.noear.solon.annotation.Configuration;
@@ -12,9 +12,9 @@ import org.noear.solon.annotation.Configuration;
public class SsoConfig {
// 配置SSO相关参数
@Bean
- private void configSso(SaSsoConfig sso) {
+ private void configSso(SaSsoClientConfig ssoClient) {
// 配置Http请求处理器
- sso.sendHttp = url -> {
+ ssoClient.sendHttp = url -> {
System.out.println("------ 发起请求:" + url);
return Forest.get(url).executeAsString();
};
diff --git a/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso3-client-solon/src/main/resources/app.yml b/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso3-client-solon/src/main/resources/app.yml
index 294a2252..dff9616b 100644
--- a/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso3-client-solon/src/main/resources/app.yml
+++ b/sa-token-demo/sa-token-demo-sso-for-solon/sa-token-demo-sso3-client-solon/src/main/resources/app.yml
@@ -5,7 +5,7 @@ server:
# sa-token配置
sa-token:
# SSO-相关配置
- sso:
+ sso-client:
# SSO-Server端 统一认证地址
auth-url: http://sa-sso-server.com:9000/sso/auth
# 使用Http请求校验ticket
diff --git a/sa-token-demo/sa-token-demo-sso/sa-token-demo-sso-server/src/main/java/com/pj/h5/H5Controller.java b/sa-token-demo/sa-token-demo-sso/sa-token-demo-sso-server/src/main/java/com/pj/h5/H5Controller.java
index 1ebe3f9a..22602555 100644
--- a/sa-token-demo/sa-token-demo-sso/sa-token-demo-sso-server/src/main/java/com/pj/h5/H5Controller.java
+++ b/sa-token-demo/sa-token-demo-sso/sa-token-demo-sso-server/src/main/java/com/pj/h5/H5Controller.java
@@ -4,8 +4,8 @@ import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
-import cn.dev33.satoken.sso.SaSsoConsts;
-import cn.dev33.satoken.sso.SaSsoUtil;
+import cn.dev33.satoken.sso.util.SaSsoConsts;
+import cn.dev33.satoken.sso.template.SaSsoUtil;
import cn.dev33.satoken.stp.StpUtil;
import cn.dev33.satoken.util.SaFoxUtil;
import cn.dev33.satoken.util.SaResult;
diff --git a/sa-token-demo/sa-token-demo-sso/sa-token-demo-sso-server/src/main/java/com/pj/sso/SsoServerController.java b/sa-token-demo/sa-token-demo-sso/sa-token-demo-sso-server/src/main/java/com/pj/sso/SsoServerController.java
index ca8973c4..7302afd7 100644
--- a/sa-token-demo/sa-token-demo-sso/sa-token-demo-sso-server/src/main/java/com/pj/sso/SsoServerController.java
+++ b/sa-token-demo/sa-token-demo-sso/sa-token-demo-sso-server/src/main/java/com/pj/sso/SsoServerController.java
@@ -1,9 +1,9 @@
package com.pj.sso;
-import cn.dev33.satoken.config.SaSsoConfig;
import cn.dev33.satoken.context.SaHolder;
import cn.dev33.satoken.sign.SaSignUtil;
-import cn.dev33.satoken.sso.SaSsoProcessor;
+import cn.dev33.satoken.sso.config.SaSsoServerConfig;
+import cn.dev33.satoken.sso.processor.SaSsoServerProcessor;
import cn.dev33.satoken.stp.StpUtil;
import cn.dev33.satoken.util.SaResult;
import com.dtflys.forest.Forest;
@@ -20,7 +20,7 @@ import org.springframework.web.servlet.ModelAndView;
@RestController
public class SsoServerController {
- /*
+ /**
* SSO-Server端:处理所有SSO相关请求
* http://{host}:{port}/sso/auth -- 单点登录授权地址,接受参数:redirect=授权重定向地址
* http://{host}:{port}/sso/doLogin -- 账号密码登录接口,接受参数:name、pwd
@@ -29,20 +29,20 @@ public class SsoServerController {
*/
@RequestMapping("/sso/*")
public Object ssoRequest() {
- return SaSsoProcessor.instance.serverDister();
+ return SaSsoServerProcessor.instance.dister();
}
// 配置SSO相关参数
@Autowired
- private void configSso(SaSsoConfig sso) {
+ private void configSso(SaSsoServerConfig ssoServer) {
// 配置:未登录时返回的View
- sso.notLoginView = () -> {
+ ssoServer.notLoginView = () -> {
return new ModelAndView("sa-login.html");
};
// 配置:登录处理函数
- sso.doLoginHandle = (name, pwd) -> {
+ ssoServer.doLoginHandle = (name, pwd) -> {
// 此处仅做模拟登录,真实环境应该查询数据进行登录
if("sa".equals(name) && "123456".equals(pwd)) {
StpUtil.login(10001);
@@ -52,11 +52,12 @@ public class SsoServerController {
};
// 配置 Http 请求处理器 (在模式三的单点注销功能下用到,如不需要可以注释掉)
- sso.sendHttp = url -> {
+ ssoServer.sendHttp = url -> {
try {
- // 发起 http 请求
System.out.println("------ 发起请求:" + url);
- return Forest.get(url).executeAsString();
+ String resStr = Forest.get(url).executeAsString();
+ System.out.println("------ 请求结果:" + resStr);
+ return resStr;
} catch (Exception e) {
e.printStackTrace();
return null;
diff --git a/sa-token-demo/sa-token-demo-sso/sa-token-demo-sso-server/src/main/resources/application.yml b/sa-token-demo/sa-token-demo-sso/sa-token-demo-sso-server/src/main/resources/application.yml
index c7937759..04395bf6 100644
--- a/sa-token-demo/sa-token-demo-sso/sa-token-demo-sso-server/src/main/resources/application.yml
+++ b/sa-token-demo/sa-token-demo-sso/sa-token-demo-sso-server/src/main/resources/application.yml
@@ -10,7 +10,7 @@ sa-token:
# domain: stp.com
# ------- SSO-模式二相关配置
- sso:
+ sso-server:
# Ticket有效期 (单位: 秒),默认五分钟
ticket-timeout: 300
# 所有允许的授权回调地址
diff --git a/sa-token-demo/sa-token-demo-sso/sa-token-demo-sso1-client/src/main/java/com/pj/SaSso1ClientApplication.java b/sa-token-demo/sa-token-demo-sso/sa-token-demo-sso1-client/src/main/java/com/pj/SaSso1ClientApplication.java
index b5347d94..71d98206 100644
--- a/sa-token-demo/sa-token-demo-sso/sa-token-demo-sso1-client/src/main/java/com/pj/SaSso1ClientApplication.java
+++ b/sa-token-demo/sa-token-demo-sso/sa-token-demo-sso1-client/src/main/java/com/pj/SaSso1ClientApplication.java
@@ -1,5 +1,6 @@
package com.pj;
+import cn.dev33.satoken.sso.SaSsoManager;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@@ -13,7 +14,15 @@ public class SaSso1ClientApplication {
public static void main(String[] args) {
SpringApplication.run(SaSso1ClientApplication.class, args);
- System.out.println("\nSa-Token SSO模式一 Client端启动成功");
+
+ System.out.println();
+ System.out.println("---------------------- Sa-Token SSO 模式一 Client 端启动成功 ----------------------");
+ System.out.println("配置信息:" + SaSsoManager.getClientConfig());
+ System.out.println("测试访问应用端一: http://s1.stp.com:9001");
+ System.out.println("测试访问应用端二: http://s2.stp.com:9001");
+ System.out.println("测试访问应用端三: http://s3.stp.com:9001");
+ System.out.println("测试前需要根据官网文档修改hosts文件,测试账号密码:sa / 123456");
+ System.out.println();
}
}
\ No newline at end of file
diff --git a/sa-token-demo/sa-token-demo-sso/sa-token-demo-sso1-client/src/main/java/com/pj/sso/SsoClientController.java b/sa-token-demo/sa-token-demo-sso/sa-token-demo-sso1-client/src/main/java/com/pj/sso/SsoClientController.java
index 0174ca9a..aefb851e 100644
--- a/sa-token-demo/sa-token-demo-sso/sa-token-demo-sso1-client/src/main/java/com/pj/sso/SsoClientController.java
+++ b/sa-token-demo/sa-token-demo-sso/sa-token-demo-sso1-client/src/main/java/com/pj/sso/SsoClientController.java
@@ -1,12 +1,11 @@
package com.pj.sso;
-import org.springframework.web.bind.annotation.ExceptionHandler;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
import cn.dev33.satoken.sso.SaSsoManager;
import cn.dev33.satoken.stp.StpUtil;
import cn.dev33.satoken.util.SaResult;
+import org.springframework.web.bind.annotation.ExceptionHandler;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
/**
* Sa-Token-SSO Client端 Controller
@@ -18,8 +17,8 @@ public class SsoClientController {
// SSO-Client端:首页
@RequestMapping("/")
public String index() {
- String authUrl = SaSsoManager.getConfig().splicingAuthUrl();
- String solUrl = SaSsoManager.getConfig().splicingSloUrl();
+ String authUrl = SaSsoManager.getClientConfig().splicingAuthUrl();
+ String solUrl = SaSsoManager.getClientConfig().splicingSloUrl();
String str = "Sa-Token SSO-Client 应用端
" +
"当前会话是否登录:" + StpUtil.isLogin() + "
" +
"登录 " +
diff --git a/sa-token-demo/sa-token-demo-sso/sa-token-demo-sso1-client/src/main/resources/application.yml b/sa-token-demo/sa-token-demo-sso/sa-token-demo-sso1-client/src/main/resources/application.yml
index 4c56b23a..b8745220 100644
--- a/sa-token-demo/sa-token-demo-sso/sa-token-demo-sso1-client/src/main/resources/application.yml
+++ b/sa-token-demo/sa-token-demo-sso/sa-token-demo-sso1-client/src/main/resources/application.yml
@@ -5,11 +5,9 @@ server:
# Sa-Token 配置
sa-token:
# SSO-相关配置
- sso:
- # SSO-Server端-单点登录授权地址
- auth-url: http://sso.stp.com:9000/sso/auth
- # SSO-Server端-单点注销地址
- slo-url: http://sso.stp.com:9000/sso/signout
+ sso-client:
+ # SSO-Server端主机地址
+ server-url: http://sso.stp.com:9000
# 配置 Sa-Token 单独使用的Redis连接 (此处需要和SSO-Server端连接同一个Redis)
alone-redis:
diff --git a/sa-token-demo/sa-token-demo-sso/sa-token-demo-sso2-client/src/main/java/com/pj/SaSso2ClientApplication.java b/sa-token-demo/sa-token-demo-sso/sa-token-demo-sso2-client/src/main/java/com/pj/SaSso2ClientApplication.java
index 78b1e868..d19c7528 100644
--- a/sa-token-demo/sa-token-demo-sso/sa-token-demo-sso2-client/src/main/java/com/pj/SaSso2ClientApplication.java
+++ b/sa-token-demo/sa-token-demo-sso/sa-token-demo-sso2-client/src/main/java/com/pj/SaSso2ClientApplication.java
@@ -1,5 +1,6 @@
package com.pj;
+import cn.dev33.satoken.sso.SaSsoManager;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@@ -8,7 +9,15 @@ public class SaSso2ClientApplication {
public static void main(String[] args) {
SpringApplication.run(SaSso2ClientApplication.class, args);
- System.out.println("\nSa-Token SSO模式二 Client端启动成功");
+
+ System.out.println();
+ System.out.println("---------------------- Sa-Token SSO 模式二 Client 端启动成功 ----------------------");
+ System.out.println("配置信息:" + SaSsoManager.getClientConfig());
+ System.out.println("测试访问应用端一: http://sa-sso-client1.com:9001");
+ System.out.println("测试访问应用端二: http://sa-sso-client2.com:9001");
+ System.out.println("测试访问应用端三: http://sa-sso-client3.com:9001");
+ System.out.println("测试前需要根据官网文档修改hosts文件,测试账号密码:sa / 123456");
+ System.out.println();
}
}
\ No newline at end of file
diff --git a/sa-token-demo/sa-token-demo-sso/sa-token-demo-sso2-client/src/main/java/com/pj/h5/H5Controller.java b/sa-token-demo/sa-token-demo-sso/sa-token-demo-sso2-client/src/main/java/com/pj/h5/H5Controller.java
index acc1958d..64f72e13 100644
--- a/sa-token-demo/sa-token-demo-sso/sa-token-demo-sso2-client/src/main/java/com/pj/h5/H5Controller.java
+++ b/sa-token-demo/sa-token-demo-sso/sa-token-demo-sso2-client/src/main/java/com/pj/h5/H5Controller.java
@@ -1,14 +1,13 @@
package com.pj.h5;
+import cn.dev33.satoken.sso.processor.SaSsoClientProcessor;
+import cn.dev33.satoken.sso.template.SaSsoUtil;
+import cn.dev33.satoken.stp.StpUtil;
+import cn.dev33.satoken.util.SaResult;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
-import cn.dev33.satoken.sso.SaSsoProcessor;
-import cn.dev33.satoken.sso.SaSsoUtil;
-import cn.dev33.satoken.stp.StpUtil;
-import cn.dev33.satoken.util.SaResult;
-
/**
* 前后台分离架构下集成SSO所需的代码 (SSO-Client端)
*
(注:如果不需要前后端分离架构下集成SSO,可删除此包下所有代码)
@@ -34,7 +33,7 @@ public class H5Controller {
// 根据ticket进行登录
@RequestMapping("/sso/doLoginByTicket")
public SaResult doLoginByTicket(String ticket) {
- Object loginId = SaSsoProcessor.instance.checkTicket(ticket, "/sso/doLoginByTicket");
+ Object loginId = SaSsoClientProcessor.instance.checkTicketByMode2Or3(ticket, "/sso/doLoginByTicket");
if(loginId != null) {
StpUtil.login(loginId);
return SaResult.data(StpUtil.getTokenValue());
diff --git a/sa-token-demo/sa-token-demo-sso/sa-token-demo-sso2-client/src/main/java/com/pj/sso/SsoClientController.java b/sa-token-demo/sa-token-demo-sso/sa-token-demo-sso2-client/src/main/java/com/pj/sso/SsoClientController.java
index 05571649..11383970 100644
--- a/sa-token-demo/sa-token-demo-sso/sa-token-demo-sso2-client/src/main/java/com/pj/sso/SsoClientController.java
+++ b/sa-token-demo/sa-token-demo-sso/sa-token-demo-sso2-client/src/main/java/com/pj/sso/SsoClientController.java
@@ -1,13 +1,12 @@
package com.pj.sso;
+import cn.dev33.satoken.sso.processor.SaSsoClientProcessor;
+import cn.dev33.satoken.stp.StpUtil;
+import cn.dev33.satoken.util.SaResult;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
-import cn.dev33.satoken.sso.SaSsoProcessor;
-import cn.dev33.satoken.stp.StpUtil;
-import cn.dev33.satoken.util.SaResult;
-
/**
* Sa-Token-SSO Client端 Controller
* @author click33
@@ -33,7 +32,7 @@ public class SsoClientController {
*/
@RequestMapping("/sso/*")
public Object ssoRequest() {
- return SaSsoProcessor.instance.clientDister();
+ return SaSsoClientProcessor.instance.dister();
}
// 全局异常拦截
diff --git a/sa-token-demo/sa-token-demo-sso/sa-token-demo-sso2-client/src/main/resources/application.yml b/sa-token-demo/sa-token-demo-sso/sa-token-demo-sso2-client/src/main/resources/application.yml
index af6f09fe..bf59d24b 100644
--- a/sa-token-demo/sa-token-demo-sso/sa-token-demo-sso2-client/src/main/resources/application.yml
+++ b/sa-token-demo/sa-token-demo-sso/sa-token-demo-sso2-client/src/main/resources/application.yml
@@ -5,12 +5,11 @@ server:
# sa-token配置
sa-token:
# SSO-相关配置
- sso:
+ sso-client:
# SSO-Server端 统一认证地址
- auth-url: http://sa-sso-server.com:9000/sso/auth
+ server-url: http://sa-sso-server.com:9000
+ # 前后端分离时用这个
# auth-url: http://127.0.0.1:8848/sa-token-demo-sso-server-h5/sso-auth.html
- # 是否打开单点注销接口
- is-slo: true
# 配置Sa-Token单独使用的Redis连接 (此处需要和SSO-Server端连接同一个Redis)
alone-redis:
diff --git a/sa-token-demo/sa-token-demo-sso/sa-token-demo-sso3-client/src/main/java/com/pj/SaSso3ClientApplication.java b/sa-token-demo/sa-token-demo-sso/sa-token-demo-sso3-client/src/main/java/com/pj/SaSso3ClientApplication.java
index e0e18259..cdcd78ce 100644
--- a/sa-token-demo/sa-token-demo-sso/sa-token-demo-sso3-client/src/main/java/com/pj/SaSso3ClientApplication.java
+++ b/sa-token-demo/sa-token-demo-sso/sa-token-demo-sso3-client/src/main/java/com/pj/SaSso3ClientApplication.java
@@ -1,5 +1,6 @@
package com.pj;
+import cn.dev33.satoken.sso.SaSsoManager;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@@ -8,7 +9,15 @@ public class SaSso3ClientApplication {
public static void main(String[] args) {
SpringApplication.run(SaSso3ClientApplication.class, args);
- System.out.println("\nSa-Token SSO模式三 Client端启动成功");
+
+ System.out.println();
+ System.out.println("---------------------- Sa-Token SSO 模式三 Client 端启动成功 ----------------------");
+ System.out.println("配置信息:" + SaSsoManager.getClientConfig());
+ System.out.println("测试访问应用端一: http://sa-sso-client1.com:9001");
+ System.out.println("测试访问应用端二: http://sa-sso-client2.com:9001");
+ System.out.println("测试访问应用端三: http://sa-sso-client3.com:9001");
+ System.out.println("测试前需要根据官网文档修改hosts文件,测试账号密码:sa / 123456");
+ System.out.println();
}
}
\ No newline at end of file
diff --git a/sa-token-demo/sa-token-demo-sso/sa-token-demo-sso3-client/src/main/java/com/pj/sso/SsoClientController.java b/sa-token-demo/sa-token-demo-sso/sa-token-demo-sso3-client/src/main/java/com/pj/sso/SsoClientController.java
index a873a998..2492688a 100644
--- a/sa-token-demo/sa-token-demo-sso/sa-token-demo-sso3-client/src/main/java/com/pj/sso/SsoClientController.java
+++ b/sa-token-demo/sa-token-demo-sso/sa-token-demo-sso3-client/src/main/java/com/pj/sso/SsoClientController.java
@@ -1,8 +1,8 @@
package com.pj.sso;
-import cn.dev33.satoken.config.SaSsoConfig;
-import cn.dev33.satoken.sso.SaSsoProcessor;
-import cn.dev33.satoken.sso.SaSsoUtil;
+import cn.dev33.satoken.sso.config.SaSsoClientConfig;
+import cn.dev33.satoken.sso.processor.SaSsoClientProcessor;
+import cn.dev33.satoken.sso.template.SaSsoUtil;
import cn.dev33.satoken.stp.StpUtil;
import cn.dev33.satoken.util.SaResult;
import com.dtflys.forest.Forest;
@@ -39,16 +39,18 @@ public class SsoClientController {
*/
@RequestMapping("/sso/*")
public Object ssoRequest() {
- return SaSsoProcessor.instance.clientDister();
+ return SaSsoClientProcessor.instance.dister();
}
// 配置SSO相关参数
@Autowired
- private void configSso(SaSsoConfig sso) {
+ private void configSso(SaSsoClientConfig ssoClient) {
// 配置Http请求处理器
- sso.sendHttp = url -> {
+ ssoClient.sendHttp = url -> {
System.out.println("------ 发起请求:" + url);
- return Forest.get(url).executeAsString();
+ String resStr = Forest.get(url).executeAsString();
+ System.out.println("------ 请求结果:" + resStr);
+ return resStr;
};
}
diff --git a/sa-token-demo/sa-token-demo-sso/sa-token-demo-sso3-client/src/main/resources/application.yml b/sa-token-demo/sa-token-demo-sso/sa-token-demo-sso3-client/src/main/resources/application.yml
index 931f2519..4d669453 100644
--- a/sa-token-demo/sa-token-demo-sso/sa-token-demo-sso3-client/src/main/resources/application.yml
+++ b/sa-token-demo/sa-token-demo-sso/sa-token-demo-sso3-client/src/main/resources/application.yml
@@ -4,18 +4,13 @@ server:
# sa-token配置
sa-token:
- # SSO-相关配置
- sso:
- # SSO-Server端 统一认证地址
- auth-url: http://sa-sso-server.com:9000/sso/auth
+ # sso-client 相关配置
+ sso-client:
+ # sso-server 端主机地址
+ server-url: http://sa-sso-server.com:9000
# 使用 Http 请求校验ticket (模式三)
is-http: true
- # SSO-Server端 ticket校验地址
- check-ticket-url: http://sa-sso-server.com:9000/sso/checkTicket
- # 单点注销地址
- slo-url: http://sa-sso-server.com:9000/sso/signout
- # 查询数据地址
- get-data-url: http://sa-sso-server.com:9000/sso/getData
+
sign:
# API 接口调用秘钥
secret-key: kQwIOrYvnXmSDkwEiFngrKidMcdrgKor
diff --git a/sa-token-plugin/sa-token-sso/src/main/java/cn/dev33/satoken/config/SaSsoConfig.java b/sa-token-plugin/sa-token-sso/src/main/java/cn/dev33/satoken/config/SaSsoConfig.java
deleted file mode 100644
index 81ff5a68..00000000
--- a/sa-token-plugin/sa-token-sso/src/main/java/cn/dev33/satoken/config/SaSsoConfig.java
+++ /dev/null
@@ -1,585 +0,0 @@
-/*
- * Copyright 2020-2099 sa-token.cc
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package cn.dev33.satoken.config;
-
-
-import java.io.Serializable;
-import java.util.function.BiFunction;
-import java.util.function.Function;
-import java.util.function.Supplier;
-
-import cn.dev33.satoken.sso.error.SaSsoErrorCode;
-import cn.dev33.satoken.sso.exception.SaSsoException;
-import cn.dev33.satoken.util.SaFoxUtil;
-import cn.dev33.satoken.util.SaResult;
-
-/**
- * Sa-Token SSO 单点登录模块 配置类 Model
- *
- * @author click33
- * @since 1.30.0
- */
-public class SaSsoConfig implements Serializable {
-
- private static final long serialVersionUID = -6541180061782004705L;
-
-
- // ----------------- Server端相关配置
-
- /**
- * 指定当前系统集成 SSO 时使用的模式(约定型配置项,不对代码逻辑产生任何影响)
- */
- public String mode = "";
-
- /**
- * Ticket有效期 (单位: 秒)
- */
- public long ticketTimeout = 60 * 5;
-
- /**
- * 所有允许的授权回调地址,多个用逗号隔开 (不在此列表中的URL将禁止下放ticket)
- */
- public String allowUrl = "*";
-
- /**
- * 是否打开单点注销功能
- */
- public Boolean isSlo = true;
-
- /**
- * 是否打开模式三(此值为 true 时将使用 http 请求:校验ticket值、单点注销、获取userinfo)
- */
- public Boolean isHttp = false;
-
-
- // ----------------- Client端相关配置
-
-// /**
-// * 指定当前系统集成 SSO 时使用的模式(约定型配置项,不对代码逻辑产生任何影响)
-// */
-// public String mode = ""; // 同Server端,不再重复声明
-
- /**
- * 当前 Client 名称标识,用于和 ticket 码的互相锁定
- */
- public String client;
-
- /**
- * 配置 Server 端单点登录授权地址
- */
- public String authUrl = "/sso/auth";
-
- // /**
- // * 是否打开单点注销功能
- // */
- // public Boolean isSlo = true; // 同Server端,不再重复声明
-
- // /**
- // * 是否打开模式三(此值为 true 时将使用 http 请求:校验ticket值、单点注销、获取userinfo)
- // */
- // public Boolean isHttp = false; // 同Server端,不再重复声明
-
- // /**
- // * 接口调用秘钥 (用于SSO模式三单点注销的接口通信身份校验)
- // */
- // public String secretkey; // 同Server端,不再重复声明
-
- /**
- * 配置 Server 端的 ticket 校验地址
- */
- public String checkTicketUrl = "/sso/checkTicket";
-
- /**
- * 配置 Server 端查询数据 getData 地址
- */
- public String getDataUrl = "/sso/getData";
-
- /**
- * 配置 Server 端查询 userinfo 地址
- */
- public String userinfoUrl = "/sso/userinfo";
-
- /**
- * 配置 Server 端单点注销地址
- */
- public String sloUrl = "/sso/signout";
-
- /**
- * 配置当前 Client 端的登录地址(为空时自动获取)
- */
- public String currSsoLogin;
-
- /**
- * 配置当前 Client 端的单点注销回调URL (为空时自动获取)
- */
- public String currSsoLogoutCall;
-
- /**
- * 配置 Server 端主机总地址,拼接在 authUrl、checkTicketUrl、getDataUrl、sloUrl 属性前面,用以简化各种 url 配置
- */
- public String serverUrl;
-
- /**
- * 是否校验参数签名(方便本地调试用的一个配置项,生产环境请务必为true)
- */
- public Boolean isCheckSign = true;
-
-
- /**
- * 获取 指定当前系统集成 SSO 时使用的模式(约定型配置项,不对代码逻辑产生任何影响)
- *
- * @return /
- */
- public String getMode() {
- return this.mode;
- }
-
- /**
- * 设置 指定当前系统集成 SSO 时使用的模式(约定型配置项,不对代码逻辑产生任何影响)
- *
- * @param mode /
- */
- public void setMode(String mode) {
- this.mode = mode;
- }
-
- /**
- * @return Ticket有效期 (单位: 秒)
- */
- public long getTicketTimeout() {
- return ticketTimeout;
- }
-
- /**
- * @param ticketTimeout Ticket有效期 (单位: 秒)
- * @return 对象自身
- */
- public SaSsoConfig setTicketTimeout(long ticketTimeout) {
- this.ticketTimeout = ticketTimeout;
- return this;
- }
-
- /**
- * @return 所有允许的授权回调地址,多个用逗号隔开 (不在此列表中的URL将禁止下放ticket)
- */
- public String getAllowUrl() {
- return allowUrl;
- }
-
- /**
- * @param allowUrl 所有允许的授权回调地址,多个用逗号隔开 (不在此列表中的URL将禁止下放ticket)
- * @return 对象自身
- */
- public SaSsoConfig setAllowUrl(String allowUrl) {
- this.allowUrl = allowUrl;
- return this;
- }
-
- /**
- * @return 是否打开单点注销功能
- */
- public Boolean getIsSlo() {
- return isSlo;
- }
-
- /**
- * @param isSlo 是否打开单点注销功能
- * @return 对象自身
- */
- public SaSsoConfig setIsSlo(Boolean isSlo) {
- this.isSlo = isSlo;
- return this;
- }
-
- /**
- * @return isHttp 是否打开模式三(此值为 true 时将使用 http 请求:校验ticket值、单点注销、获取userinfo)
- */
- public Boolean getIsHttp() {
- return isHttp;
- }
-
- /**
- * @param isHttp 是否打开模式三(此值为 true 时将使用 http 请求:校验ticket值、单点注销、获取userinfo)
- * @return 对象自身
- */
- public SaSsoConfig setIsHttp(Boolean isHttp) {
- this.isHttp = isHttp;
- return this;
- }
-
- /**
- * @return 当前 Client 名称标识,用于和 ticket 码的互相锁定
- */
- public String getClient() {
- return client;
- }
-
- /**
- * @param client 当前 Client 名称标识,用于和 ticket 码的互相锁定
- */
- public SaSsoConfig setClient(String client) {
- this.client = client;
- return this;
- }
-
- /**
- * @return 配置的 Server 端单点登录授权地址
- */
- public String getAuthUrl() {
- return authUrl;
- }
-
- /**
- * @param authUrl 配置 Server 端单点登录授权地址
- * @return 对象自身
- */
- public SaSsoConfig setAuthUrl(String authUrl) {
- this.authUrl = authUrl;
- return this;
- }
-
- /**
- * @return 配置的 Server 端的 ticket 校验地址
- */
- public String getCheckTicketUrl() {
- return checkTicketUrl;
- }
-
- /**
- * @param checkTicketUrl 配置 Server 端的 ticket 校验地址
- * @return 对象自身
- */
- public SaSsoConfig setCheckTicketUrl(String checkTicketUrl) {
- this.checkTicketUrl = checkTicketUrl;
- return this;
- }
-
- /**
- * @return Server 端查询数据 getData 地址
- */
- public String getGetDataUrl() {
- return getDataUrl;
- }
-
- /**
- * @param getDataUrl 配置 Server 端查询数据 getData 地址
- * @return 对象自身
- */
- public SaSsoConfig setGetDataUrl(String getDataUrl) {
- this.getDataUrl = getDataUrl;
- return this;
- }
-
- /**
- * @return 配置的 Server 端查询 userinfo 地址
- */
- public String getUserinfoUrl() {
- return userinfoUrl;
- }
-
- /**
- * @param userinfoUrl 配置 Server 端查询 userinfo 地址
- * @return 对象自身
- */
- public SaSsoConfig setUserinfoUrl(String userinfoUrl) {
- this.userinfoUrl = userinfoUrl;
- return this;
- }
-
- /**
- * @return 配置 Server 端单点注销地址
- */
- public String getSloUrl() {
- return sloUrl;
- }
-
- /**
- * @param sloUrl 配置 Server 端单点注销地址
- * @return 对象自身
- */
- public SaSsoConfig setSloUrl(String sloUrl) {
- this.sloUrl = sloUrl;
- return this;
- }
-
- /**
- * @return 配置当前 Client 端的登录地址(为空时自动获取)
- */
- public String getCurrSsoLogin() {
- return currSsoLogin;
- }
-
- /**
- * @param currSsoLogin 配置当前 Client 端的登录地址(为空时自动获取)
- * @return 对象自身
- */
- public SaSsoConfig setCurrSsoLogin(String currSsoLogin) {
- this.currSsoLogin = currSsoLogin;
- return this;
- }
-
- /**
- * @return 配置当前 Client 端的单点注销回调URL (为空时自动获取)
- */
- public String getCurrSsoLogoutCall() {
- return currSsoLogoutCall;
- }
-
- /**
- * @param currSsoLogoutCall 配置当前 Client 端的单点注销回调URL (为空时自动获取)
- * @return 对象自身
- */
- public SaSsoConfig setCurrSsoLogoutCall(String currSsoLogoutCall) {
- this.currSsoLogoutCall = currSsoLogoutCall;
- return this;
- }
-
- /**
- * @return 配置的 Server 端主机总地址,拼接在 authUrl、checkTicketUrl、getDataUrl、sloUrl 属性前面,用以简化各种 url 配置
- */
- public String getServerUrl() {
- return serverUrl;
- }
-
- /**
- * @param serverUrl 配置 Server 端主机总地址,拼接在 authUrl、checkTicketUrl、getDataUrl、sloUrl 属性前面,用以简化各种 url 配置
- * @return 对象自身
- */
- public SaSsoConfig setServerUrl(String serverUrl) {
- this.serverUrl = serverUrl;
- return this;
- }
-
- /**
- * 获取 是否校验参数签名(方便本地调试用的一个配置项,生产环境请务必为true)
- *
- * @return isCheckSign 是否校验参数签名(方便本地调试用的一个配置项,生产环境请务必为true)
- */
- public Boolean getIsCheckSign() {
- return this.isCheckSign;
- }
-
- /**
- * 设置 是否校验参数签名(方便本地调试用的一个配置项,生产环境请务必为true)
- *
- * @param isCheckSign 是否校验参数签名(方便本地调试用的一个配置项,生产环境请务必为true)
- */
- public SaSsoConfig setIsCheckSign(Boolean isCheckSign) {
- this.isCheckSign = isCheckSign;
- return this;
- }
-
- @Override
- public String toString() {
- return "SaSsoConfig ["
- + "mode=" + mode
- + ", ticketTimeout=" + ticketTimeout
- + ", allowUrl=" + allowUrl
- + ", isSlo=" + isSlo
- + ", isHttp=" + isHttp
- + ", client=" + client
- + ", authUrl=" + authUrl
- + ", checkTicketUrl=" + checkTicketUrl
- + ", getDataUrl=" + getDataUrl
- + ", userinfoUrl=" + userinfoUrl
- + ", sloUrl=" + sloUrl
- + ", currSsoLogin=" + currSsoLogin
- + ", currSsoLogoutCall=" + currSsoLogoutCall
- + ", serverUrl=" + serverUrl
- + ", isCheckSign=" + isCheckSign
- + "]";
- }
-
-
- // 额外添加的一些函数
-
- /**
- * @return 获取拼接url:Server 端单点登录授权地址
- */
- public String splicingAuthUrl() {
- return SaFoxUtil.spliceTwoUrl(getServerUrl(), getAuthUrl());
- }
-
- /**
- * @return 获取拼接url:Server 端的 ticket 校验地址
- */
- public String splicingCheckTicketUrl() {
- return SaFoxUtil.spliceTwoUrl(getServerUrl(), getCheckTicketUrl());
- }
-
- /**
- * @return 获取拼接url:Server 端查询数据 getData 地址
- */
- public String splicingGetDataUrl() {
- return SaFoxUtil.spliceTwoUrl(getServerUrl(), getGetDataUrl());
- }
-
- /**
- * @return 获取拼接url:Server 端查询 userinfo 地址
- */
- public String splicingUserinfoUrl() {
- return SaFoxUtil.spliceTwoUrl(getServerUrl(), getUserinfoUrl());
- }
-
- /**
- * @return 获取拼接url:Server 端单点注销地址
- */
- public String splicingSloUrl() {
- return SaFoxUtil.spliceTwoUrl(getServerUrl(), getSloUrl());
- }
-
- /**
- * 以数组形式写入允许的授权回调地址
- * @param url 所有集合
- * @return 对象自身
- */
- public SaSsoConfig setAllow(String ...url) {
- this.allowUrl = SaFoxUtil.arrayJoin(url);
- return this;
- }
-
-
- // -------------------- SaSsoHandle 所有回调函数 --------------------
-
-
- /**
- * SSO-Server端:未登录时返回的View
- */
- public Supplier