From 936dfe333d5c788b6853e13140a555976ddcf00c Mon Sep 17 00:00:00 2001
From: click33 <2393584716@qq.com>
Date: Fri, 9 Jul 2021 02:31:34 +0800
Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=8D=95=E7=82=B9=E7=99=BB?=
=?UTF-8?q?=E5=BD=95=E6=AD=A5=E9=AA=A4?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../cn/dev33/satoken/sso/SaSsoConsts.java | 12 +-
.../cn/dev33/satoken/sso/SaSsoHandle.java | 20 +--
...SaSsoInterface.java => SaSsoTemplate.java} | 53 +++----
.../java/cn/dev33/satoken/sso/SaSsoUtil.java | 35 ++---
.../sa-token-demo-oauth2-client/pom.xml | 2 +-
.../pj/controller/ClientAccController.java | 2 +-
.../src/main/resources/application.yml | 11 +-
.../sa-token-demo-oauth2-server/pom.xml | 4 +-
.../pj/controller/ServerAccController.java | 2 +-
.../pj/oauth2/SaOAuth2SpringAutowired.java | 9 +-
...aceImpl.java => SaOAuth2TemplateImpl.java} | 4 +-
.../src/main/resources/application.yml | 11 +-
.../java/com/pj/sso/SsoClientController.java | 8 +-
.../src/main/resources/application.yml | 2 +-
.../java/com/pj/sso/SsoServerController.java | 2 +-
.../src/main/resources/application.yml | 4 +-
.../src/main/resources/static/sa-res/login.js | 2 +-
.../java/com/pj/sso/SsoClientController.java | 6 +-
.../src/main/resources/application.yml | 6 +-
.../java/com/pj/sso/SsoServerController.java | 2 +-
.../src/main/resources/application.yml | 2 +-
.../src/main/resources/static/sa-res/login.js | 2 +-
sa-token-doc/doc/fun/sa-token-test.md | 1 +
sa-token-doc/doc/sso/sso-type2.md | 18 +--
sa-token-doc/doc/sso/sso-type3.md | 4 +-
sa-token-doc/doc/use/config.md | 2 +-
sa-token-plugin/pom.xml | 2 +-
sa-token-plugin/sa-token-oauth2/pom.xml | 3 +-
.../dev33/satoken/oauth2/SaOAuth2Manager.java | 22 ---
.../logic/SaOAuth2InterfaceDefaultImpl.java | 12 --
...h2Interface.java => SaOAuth2Template.java} | 133 +++++++++---------
.../satoken/oauth2/logic/SaOAuth2Util.java | 40 +++---
.../satoken/oauth2/util/SaOAuth2Consts.java | 4 -
.../oauth2/util/SaOAuth2InsideUtil.java | 28 ----
34 files changed, 206 insertions(+), 264 deletions(-)
rename sa-token-core/src/main/java/cn/dev33/satoken/sso/{SaSsoInterface.java => SaSsoTemplate.java} (82%)
rename sa-token-demo/sa-token-demo-oauth2-server/src/main/java/com/pj/oauth2/{SaOAuth2InterfaceImpl.java => SaOAuth2TemplateImpl.java} (92%)
delete mode 100644 sa-token-plugin/sa-token-oauth2/src/main/java/cn/dev33/satoken/oauth2/logic/SaOAuth2InterfaceDefaultImpl.java
rename sa-token-plugin/sa-token-oauth2/src/main/java/cn/dev33/satoken/oauth2/logic/{SaOAuth2Interface.java => SaOAuth2Template.java} (74%)
delete mode 100644 sa-token-plugin/sa-token-oauth2/src/main/java/cn/dev33/satoken/oauth2/util/SaOAuth2InsideUtil.java
diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/sso/SaSsoConsts.java b/sa-token-core/src/main/java/cn/dev33/satoken/sso/SaSsoConsts.java
index 12d4cdad..1bc440ed 100644
--- a/sa-token-core/src/main/java/cn/dev33/satoken/sso/SaSsoConsts.java
+++ b/sa-token-core/src/main/java/cn/dev33/satoken/sso/SaSsoConsts.java
@@ -14,22 +14,22 @@ public class SaSsoConsts {
public static final class Api {
/** SSO-Server端:授权地址 */
- public static String ssoAuth = "/ssoAuth";
+ public static String ssoAuth = "/sso/auth";
/** SSO-Server端:RestAPI 登录接口 */
- public static String ssoDoLogin = "/ssoDoLogin";
+ public static String ssoDoLogin = "/sso/doLogin";
/** SSO-Server端:校验ticket 获取账号id */
- public static String ssoCheckTicket = "/ssoCheckTicket";
+ public static String ssoCheckTicket = "/sso/checkTicket";
/** SSO-Server端 (and Client端):单点注销 */
- public static String ssoLogout = "/ssoLogout";
+ public static String ssoLogout = "/sso/logout";
/** SSO-Client端:登录地址 */
- public static String ssoLogin = "/ssoLogin";
+ public static String ssoLogin = "/sso/login";
/** SSO-Client端:单点注销的回调 */
- public static String ssoLogoutCall = "/ssoLogoutCall";
+ public static String ssoLogoutCall = "/sso/logoutCall";
}
diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/sso/SaSsoHandle.java b/sa-token-core/src/main/java/cn/dev33/satoken/sso/SaSsoHandle.java
index 3d2d2dc8..75370f5d 100644
--- a/sa-token-core/src/main/java/cn/dev33/satoken/sso/SaSsoHandle.java
+++ b/sa-token-core/src/main/java/cn/dev33/satoken/sso/SaSsoHandle.java
@@ -8,7 +8,7 @@ import cn.dev33.satoken.context.model.SaResponse;
import cn.dev33.satoken.router.SaRouter;
import cn.dev33.satoken.sso.SaSsoConsts.Api;
import cn.dev33.satoken.sso.SaSsoConsts.ParamName;
-import cn.dev33.satoken.stp.StpUtil;
+import cn.dev33.satoken.stp.StpLogic;
import cn.dev33.satoken.util.SaFoxUtil;
import cn.dev33.satoken.util.SaResult;
@@ -29,16 +29,17 @@ public class SaSsoHandle {
SaRequest req = SaHolder.getRequest();
SaResponse res = SaHolder.getResponse();
SaSsoConfig sso = SaManager.getConfig().getSso();
+ StpLogic stpLogic = SaSsoUtil.saSsoTemplate.stpLogic;
// ---------- SSO-Server端:单点登录授权地址
if(match(Api.ssoAuth)) {
// ---------- 此处两种情况分开处理:
// 情况1:在SSO认证中心尚未登录,则先去登登录
- if(StpUtil.isLogin() == false) {
+ if(stpLogic.isLogin() == false) {
return sso.notLoginView.get();
}
// 情况2:在SSO认证中心已经登录,开始构建授权重定向地址,下放ticket
- String redirectUrl = SaSsoUtil.buildRedirectUrl(StpUtil.getLoginId(), req.getParameter(ParamName.redirect));
+ String redirectUrl = SaSsoUtil.buildRedirectUrl(stpLogic.getLoginId(), req.getParameter(ParamName.redirect));
return res.redirect(redirectUrl);
}
@@ -88,6 +89,7 @@ public class SaSsoHandle {
SaRequest req = SaHolder.getRequest();
SaResponse res = SaHolder.getResponse();
SaSsoConfig sso = SaManager.getConfig().getSso();
+ StpLogic stpLogic = SaSsoUtil.saSsoTemplate.stpLogic;
// ---------- SSO-Client端:登录地址
if(match(Api.ssoLogin)) {
@@ -95,7 +97,7 @@ public class SaSsoHandle {
String ticket = req.getParameter(ParamName.ticket);
// 如果当前Client端已经登录,则无需访问SSO认证中心,可以直接返回
- if(StpUtil.isLogin()) {
+ if(stpLogic.isLogin()) {
return res.redirect(back);
}
/*
@@ -124,7 +126,7 @@ public class SaSsoHandle {
}
// ------- 2、如果loginId有值,说明ticket有效,进行登录并重定向至back地址
if(loginId != null ) {
- StpUtil.login(loginId);
+ stpLogic.login(loginId);
return res.redirect(back);
} else {
// 如果ticket无效:
@@ -135,7 +137,7 @@ public class SaSsoHandle {
// ---------- SSO-Client端:单点注销 [模式二]
if(match(Api.ssoLogout) && sso.isSlo && sso.isHttp == false) {
- StpUtil.logout();
+ stpLogic.logout();
if(req.getParameter(ParamName.back) == null) {
return SaResult.ok("单点注销成功");
} else {
@@ -146,11 +148,11 @@ public class SaSsoHandle {
// ---------- SSO-Client端:单点注销 [模式三]
if(match(Api.ssoLogout) && sso.isSlo && sso.isHttp) {
// 如果未登录,则无需注销
- if(StpUtil.isLogin() == false) {
+ if(stpLogic.isLogin() == false) {
return SaResult.ok();
}
// 调用SSO-Server认证中心API
- String url = SaSsoUtil.buildSloUrl(StpUtil.getLoginId());
+ String url = SaSsoUtil.buildSloUrl(stpLogic.getLoginId());
String body = String.valueOf(sso.sendHttp.apply(url));
if(SaSsoConsts.OK.equals(body)) {
if(req.getParameter(ParamName.back) == null) {
@@ -168,7 +170,7 @@ public class SaSsoHandle {
String secretkey = req.getParameter(ParamName.secretkey);
SaSsoUtil.checkSecretkey(secretkey);
- StpUtil.logoutByTokenValue(StpUtil.getTokenValueByLoginId(loginId));
+ stpLogic.logoutByTokenValue(stpLogic.getTokenValueByLoginId(loginId));
return SaSsoConsts.OK;
}
diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/sso/SaSsoInterface.java b/sa-token-core/src/main/java/cn/dev33/satoken/sso/SaSsoTemplate.java
similarity index 82%
rename from sa-token-core/src/main/java/cn/dev33/satoken/sso/SaSsoInterface.java
rename to sa-token-core/src/main/java/cn/dev33/satoken/sso/SaSsoTemplate.java
index acf463f9..aa0fcadc 100644
--- a/sa-token-core/src/main/java/cn/dev33/satoken/sso/SaSsoInterface.java
+++ b/sa-token-core/src/main/java/cn/dev33/satoken/sso/SaSsoTemplate.java
@@ -9,7 +9,7 @@ import cn.dev33.satoken.SaManager;
import cn.dev33.satoken.config.SaSsoConfig;
import cn.dev33.satoken.exception.SaTokenException;
import cn.dev33.satoken.sso.SaSsoConsts.ParamName;
-import cn.dev33.satoken.stp.StpUtil;
+import cn.dev33.satoken.stp.StpLogic;
import cn.dev33.satoken.util.SaFoxUtil;
/**
@@ -17,14 +17,19 @@ import cn.dev33.satoken.util.SaFoxUtil;
* @author kong
*
*/
-public interface SaSsoInterface {
+public class SaSsoTemplate {
+
+ public StpLogic stpLogic;
+ public SaSsoTemplate(StpLogic stpLogic) {
+ this.stpLogic = stpLogic;
+ }
/**
* 创建一个 Ticket码
* @param loginId 账号id
* @return 票据
*/
- public default String createTicket(Object loginId) {
+ public String createTicket(Object loginId) {
// 随机一个ticket
String ticket = randomTicket(loginId);
@@ -41,7 +46,7 @@ public interface SaSsoInterface {
* 删除一个 Ticket码
* @param ticket Ticket码
*/
- public default void deleteTicket(String ticket) {
+ public void deleteTicket(String ticket) {
Object loginId = getLoginId(ticket);
if(loginId != null) {
SaManager.getSaTokenDao().delete(splicingKeyTicketToId(ticket));
@@ -55,7 +60,7 @@ public interface SaSsoInterface {
* @param redirect Client端提供的重定向地址
* @return see note
*/
- public default String buildRedirectUrl(Object loginId, String redirect) {
+ public String buildRedirectUrl(Object loginId, String redirect) {
// 校验重定向地址
checkRedirectUrl(redirect);
@@ -79,7 +84,7 @@ public interface SaSsoInterface {
* @param ticket Ticket码
* @return 账号id
*/
- public default Object getLoginId(String ticket) {
+ public Object getLoginId(String ticket) {
if(SaFoxUtil.isEmpty(ticket)) {
return null;
}
@@ -93,7 +98,7 @@ public interface SaSsoInterface {
* @param cs 要转换的类型
* @return 账号id
*/
- public default T getLoginId(String ticket, Class cs) {
+ public T getLoginId(String ticket, Class cs) {
return SaFoxUtil.getValueByType(getLoginId(ticket), cs);
}
@@ -102,7 +107,7 @@ public interface SaSsoInterface {
* @param ticket Ticket码
* @return 账号id
*/
- public default Object checkTicket(String ticket) {
+ public Object checkTicket(String ticket) {
Object loginId = getLoginId(ticket);
if(loginId != null) {
deleteTicket(ticket);
@@ -114,7 +119,7 @@ public interface SaSsoInterface {
* 校验重定向url合法性
* @param url 下放ticket的url地址
*/
- public default void checkRedirectUrl(String url) {
+ public void checkRedirectUrl(String url) {
// 1、是否是一个有效的url
if(SaFoxUtil.isUrl(url) == false) {
@@ -144,7 +149,7 @@ public interface SaSsoInterface {
* @param back 回调路径
* @return [SSO-Server端-认证地址 ]
*/
- public default String buildServerAuthUrl(String clientLoginUrl, String back) {
+ public String buildServerAuthUrl(String clientLoginUrl, String back) {
// 服务端认证地址
String serverUrl = SaManager.getConfig().getSso().getAuthUrl();
@@ -165,7 +170,7 @@ public interface SaSsoInterface {
* @param url url
* @return 编码过后的url
*/
- public default String encodeBackParam(String url) {
+ public String encodeBackParam(String url) {
// 获取back参数所在位置
int index = url.indexOf("?" + ParamName.back + "=");
@@ -191,7 +196,7 @@ public interface SaSsoInterface {
* @param loginId 账号id
* @return 票据
*/
- public default String randomTicket(Object loginId) {
+ public String randomTicket(Object loginId) {
return SaFoxUtil.getRandomString(64);
}
@@ -202,7 +207,7 @@ public interface SaSsoInterface {
* 校验secretkey秘钥是否有效
* @param secretkey 秘钥
*/
- public default void checkSecretkey(String secretkey) {
+ public void checkSecretkey(String secretkey) {
if(secretkey == null || secretkey.isEmpty() || secretkey.equals(SaManager.getConfig().getSso().getSecretkey()) == false) {
throw new SaTokenException("无效秘钥:" + secretkey);
}
@@ -214,7 +219,7 @@ public interface SaSsoInterface {
* @param ssoLogoutCallUrl 单点注销时的回调URL
* @return 构建完毕的URL
*/
- public default String buildCheckTicketUrl(String ticket, String ssoLogoutCallUrl) {
+ public String buildCheckTicketUrl(String ticket, String ssoLogoutCallUrl) {
String url = SaManager.getConfig().getSso().getCheckTicketUrl();
// 拼接ticket参数
url = SaFoxUtil.joinParam(url, ParamName.ticket, ticket);
@@ -231,13 +236,13 @@ public interface SaSsoInterface {
* @param loginId 账号id
* @param sloCallbackUrl 单点注销时的回调URL
*/
- public default void registerSloCallbackUrl(Object loginId, String sloCallbackUrl) {
+ public void registerSloCallbackUrl(Object loginId, String sloCallbackUrl) {
if(loginId == null || sloCallbackUrl == null || sloCallbackUrl.isEmpty()) {
return;
}
- Set urlSet = StpUtil.getSessionByLoginId(loginId).get(SaSsoConsts.SLO_CALLBACK_SET_KEY, ()-> new HashSet());
+ Set urlSet = stpLogic.getSessionByLoginId(loginId).get(SaSsoConsts.SLO_CALLBACK_SET_KEY, ()-> new HashSet());
urlSet.add(sloCallbackUrl);
- StpUtil.getSessionByLoginId(loginId).set(SaSsoConsts.SLO_CALLBACK_SET_KEY, urlSet);
+ stpLogic.getSessionByLoginId(loginId).set(SaSsoConsts.SLO_CALLBACK_SET_KEY, urlSet);
}
/**
@@ -245,9 +250,9 @@ public interface SaSsoInterface {
* @param loginId 账号id
* @param fun 调用方法
*/
- public default void forEachSloUrl(Object loginId, CallSloUrlFunction fun) {
+ public void forEachSloUrl(Object loginId, CallSloUrlFunction fun) {
String secretkey = SaManager.getConfig().getSso().getSecretkey();
- Set urlSet = StpUtil.getSessionByLoginId(loginId).get(SaSsoConsts.SLO_CALLBACK_SET_KEY,
+ Set urlSet = stpLogic.getSessionByLoginId(loginId).get(SaSsoConsts.SLO_CALLBACK_SET_KEY,
() -> new HashSet());
for (String url : urlSet) {
@@ -264,7 +269,7 @@ public interface SaSsoInterface {
* @param loginId 要注销的账号id
* @return 单点注销URL
*/
- public default String buildSloUrl(Object loginId) {
+ public String buildSloUrl(Object loginId) {
SaSsoConfig ssoConfig = SaManager.getConfig().getSso();
String url = ssoConfig.getSloUrl();
url = SaFoxUtil.joinParam(url, ParamName.loginId, loginId);
@@ -278,7 +283,7 @@ public interface SaSsoInterface {
* @param loginId 指定账号
* @param fun 调用方法
*/
- public default void singleLogout(String secretkey, Object loginId, CallSloUrlFunction fun) {
+ public void singleLogout(String secretkey, Object loginId, CallSloUrlFunction fun) {
// step.1 校验秘钥
checkSecretkey(secretkey);
@@ -287,7 +292,7 @@ public interface SaSsoInterface {
// step.3 Server端注销
// StpUtil.logoutByLoginId(loginId);
- StpUtil.logoutByTokenValue(StpUtil.getTokenValueByLoginId(loginId));
+ stpLogic.logoutByTokenValue(stpLogic.getTokenValueByLoginId(loginId));
}
@@ -299,7 +304,7 @@ public interface SaSsoInterface {
* @param ticket
* @return key
*/
- public default String splicingKeyTicketToId(String ticket) {
+ public String splicingKeyTicketToId(String ticket) {
return SaManager.getConfig().getTokenName() + ":ticket:" + ticket;
}
@@ -308,7 +313,7 @@ public interface SaSsoInterface {
* @param id 账号id
* @return key
*/
- public default String splicingKeyIdToTicket(Object id) {
+ public String splicingKeyIdToTicket(Object id) {
return SaManager.getConfig().getTokenName() + ":id-ticket:" + id;
}
diff --git a/sa-token-core/src/main/java/cn/dev33/satoken/sso/SaSsoUtil.java b/sa-token-core/src/main/java/cn/dev33/satoken/sso/SaSsoUtil.java
index dce967f0..870e456e 100644
--- a/sa-token-core/src/main/java/cn/dev33/satoken/sso/SaSsoUtil.java
+++ b/sa-token-core/src/main/java/cn/dev33/satoken/sso/SaSsoUtil.java
@@ -1,6 +1,7 @@
package cn.dev33.satoken.sso;
-import cn.dev33.satoken.sso.SaSsoInterface.CallSloUrlFunction;
+import cn.dev33.satoken.sso.SaSsoTemplate.CallSloUrlFunction;
+import cn.dev33.satoken.stp.StpUtil;
/**
* Sa-Token-SSO 单点登录工具类
@@ -10,9 +11,9 @@ import cn.dev33.satoken.sso.SaSsoInterface.CallSloUrlFunction;
public class SaSsoUtil {
/**
- * 底层 SaSsoServerInterface 对象
+ * 底层 SaSsoTemplate 对象
*/
- public static SaSsoInterface saSsoInterface = new SaSsoInterface() {};
+ public static SaSsoTemplate saSsoTemplate = new SaSsoTemplate(StpUtil.stpLogic);
/**
* 创建一个 Ticket票据
@@ -20,7 +21,7 @@ public class SaSsoUtil {
* @return 票据
*/
public static String createTicket(Object loginId) {
- return saSsoInterface.createTicket(loginId);
+ return saSsoTemplate.createTicket(loginId);
}
/**
@@ -28,7 +29,7 @@ public class SaSsoUtil {
* @param ticket Ticket码
*/
public static void deleteTicket(String ticket) {
- saSsoInterface.deleteTicket(ticket);
+ saSsoTemplate.deleteTicket(ticket);
}
/**
@@ -38,7 +39,7 @@ public class SaSsoUtil {
* @return see note
*/
public static String buildRedirectUrl(Object loginId, String redirect) {
- return saSsoInterface.buildRedirectUrl(loginId, redirect);
+ return saSsoTemplate.buildRedirectUrl(loginId, redirect);
}
/**
@@ -47,7 +48,7 @@ public class SaSsoUtil {
* @return 账号id
*/
public static Object getLoginId(String ticket) {
- return saSsoInterface.getLoginId(ticket);
+ return saSsoTemplate.getLoginId(ticket);
}
/**
@@ -58,7 +59,7 @@ public class SaSsoUtil {
* @return 账号id
*/
public static T getLoginId(String ticket, Class cs) {
- return saSsoInterface.getLoginId(ticket, cs);
+ return saSsoTemplate.getLoginId(ticket, cs);
}
/**
@@ -67,7 +68,7 @@ public class SaSsoUtil {
* @return 账号id
*/
public static Object checkTicket(String ticket) {
- return saSsoInterface.checkTicket(ticket);
+ return saSsoTemplate.checkTicket(ticket);
}
/**
@@ -75,7 +76,7 @@ public class SaSsoUtil {
* @param url 下放ticket的url地址
*/
public static void checkAuthUrl(String url) {
- saSsoInterface.checkRedirectUrl(url);
+ saSsoTemplate.checkRedirectUrl(url);
}
/**
@@ -85,7 +86,7 @@ public class SaSsoUtil {
* @return [SSO-Server端-认证地址 ]
*/
public static String buildServerAuthUrl(String clientLoginUrl, String back) {
- return saSsoInterface.buildServerAuthUrl(clientLoginUrl, back);
+ return saSsoTemplate.buildServerAuthUrl(clientLoginUrl, back);
}
@@ -96,7 +97,7 @@ public class SaSsoUtil {
* @param secretkey 秘钥
*/
public static void checkSecretkey(String secretkey) {
- saSsoInterface.checkSecretkey(secretkey);
+ saSsoTemplate.checkSecretkey(secretkey);
}
/**
@@ -106,7 +107,7 @@ public class SaSsoUtil {
* @return 构建完毕的URL
*/
public static String buildCheckTicketUrl(String ticket, String ssoLogoutCallUrl) {
- return saSsoInterface.buildCheckTicketUrl(ticket, ssoLogoutCallUrl);
+ return saSsoTemplate.buildCheckTicketUrl(ticket, ssoLogoutCallUrl);
}
/**
@@ -115,7 +116,7 @@ public class SaSsoUtil {
* @param sloCallbackUrl 单点注销时的回调URL
*/
public static void registerSloCallbackUrl(Object loginId, String sloCallbackUrl) {
- saSsoInterface.registerSloCallbackUrl(loginId, sloCallbackUrl);
+ saSsoTemplate.registerSloCallbackUrl(loginId, sloCallbackUrl);
}
/**
@@ -124,7 +125,7 @@ public class SaSsoUtil {
* @param fun 调用方法
*/
public static void forEachSloUrl(Object loginId, CallSloUrlFunction fun) {
- saSsoInterface.forEachSloUrl(loginId, fun);
+ saSsoTemplate.forEachSloUrl(loginId, fun);
}
/**
@@ -133,7 +134,7 @@ public class SaSsoUtil {
* @return 单点注销URL
*/
public static String buildSloUrl(Object loginId) {
- return saSsoInterface.buildSloUrl(loginId);
+ return saSsoTemplate.buildSloUrl(loginId);
}
/**
@@ -143,7 +144,7 @@ public class SaSsoUtil {
* @param fun 调用方法
*/
public static void singleLogout(String secretkey, Object loginId, CallSloUrlFunction fun) {
- saSsoInterface.singleLogout(secretkey, loginId, fun);
+ saSsoTemplate.singleLogout(secretkey, loginId, fun);
}
}
diff --git a/sa-token-demo/sa-token-demo-oauth2-client/pom.xml b/sa-token-demo/sa-token-demo-oauth2-client/pom.xml
index 77963e74..31af5464 100644
--- a/sa-token-demo/sa-token-demo-oauth2-client/pom.xml
+++ b/sa-token-demo/sa-token-demo-oauth2-client/pom.xml
@@ -17,7 +17,7 @@
1.8
3.1.1
- 1.15.0.RELEASE
+ 1.21.0
diff --git a/sa-token-demo/sa-token-demo-oauth2-client/src/main/java/com/pj/controller/ClientAccController.java b/sa-token-demo/sa-token-demo-oauth2-client/src/main/java/com/pj/controller/ClientAccController.java
index 489cb538..8520b8c2 100644
--- a/sa-token-demo/sa-token-demo-oauth2-client/src/main/java/com/pj/controller/ClientAccController.java
+++ b/sa-token-demo/sa-token-demo-oauth2-client/src/main/java/com/pj/controller/ClientAccController.java
@@ -58,7 +58,7 @@ public class ClientAccController {
long userId = getUserIdByOpenid(openid);
// 登录并返回账号信息
- StpUtil.setLoginId(userId);
+ StpUtil.login(userId);
return AjaxJson.getSuccessData(userId).set("openid", openid);
}
diff --git a/sa-token-demo/sa-token-demo-oauth2-client/src/main/resources/application.yml b/sa-token-demo/sa-token-demo-oauth2-client/src/main/resources/application.yml
index 5eac1b0d..b7d430a9 100644
--- a/sa-token-demo/sa-token-demo-oauth2-client/src/main/resources/application.yml
+++ b/sa-token-demo/sa-token-demo-oauth2-client/src/main/resources/application.yml
@@ -1,14 +1,13 @@
server:
port: 8002
+# sa-token配置
+sa-token:
+ # token名称 (同时也是cookie名称)
+ token-name: satoken-client
+
spring:
# 静态文件路径映射
resources:
static-locations: classpath:/META-INF/resources/,classpath:/resources/, classpath:/static/, classpath:/public/
# static-locations: file:E:\work\project-yun\sa-token\sa-token-demo-oauth2\sa-token-demo-oauth2-client\src\main\resources\static\
-
- # sa-token配置
- sa-token:
- # token名称 (同时也是cookie名称)
- token-name: satoken-client
-
\ No newline at end of file
diff --git a/sa-token-demo/sa-token-demo-oauth2-server/pom.xml b/sa-token-demo/sa-token-demo-oauth2-server/pom.xml
index a8f54ab6..5347f48c 100644
--- a/sa-token-demo/sa-token-demo-oauth2-server/pom.xml
+++ b/sa-token-demo/sa-token-demo-oauth2-server/pom.xml
@@ -17,7 +17,7 @@
1.8
3.1.1
- 1.15.0.RELEASE
+ 1.21.0
@@ -39,7 +39,7 @@
cn.dev33
sa-token-oauth2
- 1.15.0-alpha
+ ${sa-token-version}
diff --git a/sa-token-demo/sa-token-demo-oauth2-server/src/main/java/com/pj/controller/ServerAccController.java b/sa-token-demo/sa-token-demo-oauth2-server/src/main/java/com/pj/controller/ServerAccController.java
index 1c888709..dd5bbfc0 100644
--- a/sa-token-demo/sa-token-demo-oauth2-server/src/main/java/com/pj/controller/ServerAccController.java
+++ b/sa-token-demo/sa-token-demo-oauth2-server/src/main/java/com/pj/controller/ServerAccController.java
@@ -19,7 +19,7 @@ public class ServerAccController {
public AjaxJson test(String username, String password) {
System.out.println("------------------ 成功进入请求 ------------------");
if("test".equals(username) && "test".equals(password)) {
- StpUtil.setLoginId(10001);
+ StpUtil.login(10001);
return AjaxJson.getSuccess();
}
return AjaxJson.getError();
diff --git a/sa-token-demo/sa-token-demo-oauth2-server/src/main/java/com/pj/oauth2/SaOAuth2SpringAutowired.java b/sa-token-demo/sa-token-demo-oauth2-server/src/main/java/com/pj/oauth2/SaOAuth2SpringAutowired.java
index 2da17816..c1344af6 100644
--- a/sa-token-demo/sa-token-demo-oauth2-server/src/main/java/com/pj/oauth2/SaOAuth2SpringAutowired.java
+++ b/sa-token-demo/sa-token-demo-oauth2-server/src/main/java/com/pj/oauth2/SaOAuth2SpringAutowired.java
@@ -7,7 +7,8 @@ import org.springframework.stereotype.Component;
import cn.dev33.satoken.oauth2.SaOAuth2Manager;
import cn.dev33.satoken.oauth2.config.SaOAuth2Config;
-import cn.dev33.satoken.oauth2.logic.SaOAuth2Interface;
+import cn.dev33.satoken.oauth2.logic.SaOAuth2Template;
+import cn.dev33.satoken.oauth2.logic.SaOAuth2Util;
/**
* 利用Spring完成自动装配
@@ -24,7 +25,7 @@ public class SaOAuth2SpringAutowired {
* @return 配置对象
*/
@Bean
- @ConfigurationProperties(prefix = "spring.sa-token.oauth2")
+ @ConfigurationProperties(prefix = "sa-token.oauth2")
public SaOAuth2Config getSaOAuth2Config() {
return new SaOAuth2Config();
}
@@ -45,8 +46,8 @@ public class SaOAuth2SpringAutowired {
* @param saOAuth2Interface OAuth2接口Bean
*/
@Autowired(required = false)
- public void setSaOAuth2Interface(SaOAuth2Interface saOAuth2Interface) {
- SaOAuth2Manager.setInterface(saOAuth2Interface);
+ public void setSaOAuth2Interface(SaOAuth2Template saOAuth2Interface) {
+ SaOAuth2Util.saOAuth2Template = saOAuth2Interface;
}
diff --git a/sa-token-demo/sa-token-demo-oauth2-server/src/main/java/com/pj/oauth2/SaOAuth2InterfaceImpl.java b/sa-token-demo/sa-token-demo-oauth2-server/src/main/java/com/pj/oauth2/SaOAuth2TemplateImpl.java
similarity index 92%
rename from sa-token-demo/sa-token-demo-oauth2-server/src/main/java/com/pj/oauth2/SaOAuth2InterfaceImpl.java
rename to sa-token-demo/sa-token-demo-oauth2-server/src/main/java/com/pj/oauth2/SaOAuth2TemplateImpl.java
index 708c73fa..d31ead24 100644
--- a/sa-token-demo/sa-token-demo-oauth2-server/src/main/java/com/pj/oauth2/SaOAuth2InterfaceImpl.java
+++ b/sa-token-demo/sa-token-demo-oauth2-server/src/main/java/com/pj/oauth2/SaOAuth2TemplateImpl.java
@@ -5,14 +5,14 @@ import java.util.List;
import org.springframework.stereotype.Component;
-import cn.dev33.satoken.oauth2.logic.SaOAuth2Interface;
+import cn.dev33.satoken.oauth2.logic.SaOAuth2Template;
/**
* 使用oauth2.0 所必须的一些自定义实现
* @author kong
*/
@Component
-public class SaOAuth2InterfaceImpl implements SaOAuth2Interface {
+public class SaOAuth2TemplateImpl extends SaOAuth2Template {
/*
diff --git a/sa-token-demo/sa-token-demo-oauth2-server/src/main/resources/application.yml b/sa-token-demo/sa-token-demo-oauth2-server/src/main/resources/application.yml
index 4424f2d3..23244140 100644
--- a/sa-token-demo/sa-token-demo-oauth2-server/src/main/resources/application.yml
+++ b/sa-token-demo/sa-token-demo-oauth2-server/src/main/resources/application.yml
@@ -1,18 +1,17 @@
server:
port: 8001
+# sa-token配置
+sa-token:
+ # token名称 (同时也是cookie名称)
+ token-name: satoken-server
+
spring:
# 静态文件路径映射
resources:
static-locations: classpath:/META-INF/resources/,classpath:/resources/, classpath:/static/, classpath:/public/
# static-locations: file:E:\work\project-yun\sa-token\sa-token-demo-oauth2\sa-token-demo-oauth2-server\src\main\resources\static\
- # sa-token配置
- sa-token:
- # token名称 (同时也是cookie名称)
- token-name: satoken-server
-
-
# redis配置
redis:
# Redis数据库索引(默认为0)
diff --git a/sa-token-demo/sa-token-demo-sso2-client/src/main/java/com/pj/sso/SsoClientController.java b/sa-token-demo/sa-token-demo-sso2-client/src/main/java/com/pj/sso/SsoClientController.java
index 3603bd18..9e2d3728 100644
--- a/sa-token-demo/sa-token-demo-sso2-client/src/main/java/com/pj/sso/SsoClientController.java
+++ b/sa-token-demo/sa-token-demo-sso2-client/src/main/java/com/pj/sso/SsoClientController.java
@@ -18,14 +18,14 @@ public class SsoClientController {
public String index() {
String str = "Sa-Token SSO-Client 应用端
" +
"当前会话是否登录:" + StpUtil.isLogin() + "
" +
- "登录 " +
- "注销
";
- // "注销
"; // 上面是[跳页面]方式,这个是[RestAPI]方式 区别在于是否加了back参数
+ "登录 " +
+ "注销
";
+ // "注销"; // 上面是[跳页面]方式,这个是[RestAPI]方式 区别在于是否加了back参数
return str;
}
// SSO-Client端:处理所有SSO相关请求
- @RequestMapping("/sso*")
+ @RequestMapping("/sso/*")
public Object ssoRequest() {
return SaSsoHandle.clientRequest();
}
diff --git a/sa-token-demo/sa-token-demo-sso2-client/src/main/resources/application.yml b/sa-token-demo/sa-token-demo-sso2-client/src/main/resources/application.yml
index 218d54f6..5cb2ffb8 100644
--- a/sa-token-demo/sa-token-demo-sso2-client/src/main/resources/application.yml
+++ b/sa-token-demo/sa-token-demo-sso2-client/src/main/resources/application.yml
@@ -13,7 +13,7 @@ sa-token:
# SSO-相关配置
sso:
# SSO-Server端 单点登录地址
- auth-url: http://sa-sso-server.com:9000/ssoAuth
+ auth-url: http://sa-sso-server.com:9000/sso/auth
# 是否打开单点注销接口
is-slo: true
diff --git a/sa-token-demo/sa-token-demo-sso2-server/src/main/java/com/pj/sso/SsoServerController.java b/sa-token-demo/sa-token-demo-sso2-server/src/main/java/com/pj/sso/SsoServerController.java
index 4976c2fe..ec897b5c 100644
--- a/sa-token-demo/sa-token-demo-sso2-server/src/main/java/com/pj/sso/SsoServerController.java
+++ b/sa-token-demo/sa-token-demo-sso2-server/src/main/java/com/pj/sso/SsoServerController.java
@@ -19,7 +19,7 @@ import cn.dev33.satoken.util.SaResult;
public class SsoServerController {
// SSO-Server端:处理所有SSO相关请求
- @RequestMapping("/sso*")
+ @RequestMapping("/sso/*")
public Object ssoRequest() {
return SaSsoHandle.serverRequest();
}
diff --git a/sa-token-demo/sa-token-demo-sso2-server/src/main/resources/application.yml b/sa-token-demo/sa-token-demo-sso2-server/src/main/resources/application.yml
index 0e298e12..c8b23222 100644
--- a/sa-token-demo/sa-token-demo-sso2-server/src/main/resources/application.yml
+++ b/sa-token-demo/sa-token-demo-sso2-server/src/main/resources/application.yml
@@ -8,8 +8,8 @@ sa-token:
sso:
# Ticket有效期 (单位: 秒),默认五分钟
ticket-timeout: 300
- # 所有允许的授权回调地址 (此处为了方便测试配置为*,线上生产环境一定要配置为详细地地址)
- allow-url: http://sa-sso-client1.com:9001/ssoLogin, http://sa-sso-client2.com:9001/ssoLogin, http://sa-sso-client3.com:9001/ssoLogin
+ # 所有允许的授权回调地址
+ allow-url: http://sa-sso-client1.com:9001/sso/login, http://sa-sso-client2.com:9001/sso/login, http://sa-sso-client3.com:9001/sso/login
spring:
# Redis配置
diff --git a/sa-token-demo/sa-token-demo-sso2-server/src/main/resources/static/sa-res/login.js b/sa-token-demo/sa-token-demo-sso2-server/src/main/resources/static/sa-res/login.js
index 08c57ce6..f581ee78 100644
--- a/sa-token-demo/sa-token-demo-sso2-server/src/main/resources/static/sa-res/login.js
+++ b/sa-token-demo/sa-token-demo-sso2-server/src/main/resources/static/sa-res/login.js
@@ -20,7 +20,7 @@ $('.login-btn').click(function(){
// 开始登录
setTimeout(function() {
$.ajax({
- url: "ssoDoLogin",
+ url: "sso/doLogin",
type: "post",
data: {
name: $('[name=name]').val(),
diff --git a/sa-token-demo/sa-token-demo-sso3-client/src/main/java/com/pj/sso/SsoClientController.java b/sa-token-demo/sa-token-demo-sso3-client/src/main/java/com/pj/sso/SsoClientController.java
index f8e635f3..d47c1ada 100644
--- a/sa-token-demo/sa-token-demo-sso3-client/src/main/java/com/pj/sso/SsoClientController.java
+++ b/sa-token-demo/sa-token-demo-sso3-client/src/main/java/com/pj/sso/SsoClientController.java
@@ -22,13 +22,13 @@ public class SsoClientController {
public String index() {
String str = "Sa-Token SSO-Client 应用端
" +
"当前会话是否登录:" + StpUtil.isLogin() + "
" +
- "登录" +
- " 注销
";
+ "登录" +
+ " 注销
";
return str;
}
// SSO-Client端:处理所有SSO相关请求
- @RequestMapping("/sso*")
+ @RequestMapping("/sso/*")
public Object ssoRequest() {
return SaSsoHandle.clientRequest();
}
diff --git a/sa-token-demo/sa-token-demo-sso3-client/src/main/resources/application.yml b/sa-token-demo/sa-token-demo-sso3-client/src/main/resources/application.yml
index 7460dcf1..5c94b1a5 100644
--- a/sa-token-demo/sa-token-demo-sso3-client/src/main/resources/application.yml
+++ b/sa-token-demo/sa-token-demo-sso3-client/src/main/resources/application.yml
@@ -13,15 +13,15 @@ sa-token:
# SSO-相关配置
sso:
# SSO-Server端 单点登录地址
- auth-url: http://sa-sso-server.com:9000/ssoAuth
+ auth-url: http://sa-sso-server.com:9000/sso/auth
# 使用Http请求校验ticket
is-http: true
# SSO-Server端 ticket校验地址
- check-ticket-url: http://sa-sso-server.com:9000/ssoCheckTicket
+ check-ticket-url: http://sa-sso-server.com:9000/sso/checkTicket
# 打开单点注销功能
is-slo: true
# 单点注销地址
- slo-url: http://sa-sso-server.com:9000/ssoLogout
+ slo-url: http://sa-sso-server.com:9000/sso/logout
# 接口调用秘钥
secretkey: kQwIOrYvnXmSDkwEiFngrKidMcdrgKor
diff --git a/sa-token-demo/sa-token-demo-sso3-server/src/main/java/com/pj/sso/SsoServerController.java b/sa-token-demo/sa-token-demo-sso3-server/src/main/java/com/pj/sso/SsoServerController.java
index df73d456..ef679a85 100644
--- a/sa-token-demo/sa-token-demo-sso3-server/src/main/java/com/pj/sso/SsoServerController.java
+++ b/sa-token-demo/sa-token-demo-sso3-server/src/main/java/com/pj/sso/SsoServerController.java
@@ -21,7 +21,7 @@ import cn.dev33.satoken.util.SaResult;
public class SsoServerController {
// SSO-Server端:处理所有SSO相关请求
- @RequestMapping("/sso*")
+ @RequestMapping("/sso/*")
public Object ssoRequest() {
return SaSsoHandle.serverRequest();
}
diff --git a/sa-token-demo/sa-token-demo-sso3-server/src/main/resources/application.yml b/sa-token-demo/sa-token-demo-sso3-server/src/main/resources/application.yml
index 98bb58a0..87e4209c 100644
--- a/sa-token-demo/sa-token-demo-sso3-server/src/main/resources/application.yml
+++ b/sa-token-demo/sa-token-demo-sso3-server/src/main/resources/application.yml
@@ -9,7 +9,7 @@ sa-token:
# Ticket有效期 (单位: 秒),默认五分钟
ticket-timeout: 300
# 所有允许的授权回调地址
- allow-url: http://sa-sso-client1.com:9001/ssoLogin, http://sa-sso-client2.com:9001/ssoLogin, http://sa-sso-client3.com:9001/ssoLogin
+ allow-url: http://sa-sso-client1.com:9001/sso/login, http://sa-sso-client2.com:9001/sso/login, http://sa-sso-client3.com:9001/sso/login
# 接口调用秘钥(用于SSO模式三的单点注销功能)
secretkey: kQwIOrYvnXmSDkwEiFngrKidMcdrgKor
# 使用Http请求校验ticket
diff --git a/sa-token-demo/sa-token-demo-sso3-server/src/main/resources/static/sa-res/login.js b/sa-token-demo/sa-token-demo-sso3-server/src/main/resources/static/sa-res/login.js
index 08c57ce6..f581ee78 100644
--- a/sa-token-demo/sa-token-demo-sso3-server/src/main/resources/static/sa-res/login.js
+++ b/sa-token-demo/sa-token-demo-sso3-server/src/main/resources/static/sa-res/login.js
@@ -20,7 +20,7 @@ $('.login-btn').click(function(){
// 开始登录
setTimeout(function() {
$.ajax({
- url: "ssoDoLogin",
+ url: "sso/doLogin",
type: "post",
data: {
name: $('[name=name]').val(),
diff --git a/sa-token-doc/doc/fun/sa-token-test.md b/sa-token-doc/doc/fun/sa-token-test.md
index 208a0744..f5cc2af5 100644
--- a/sa-token-doc/doc/fun/sa-token-test.md
+++ b/sa-token-doc/doc/fun/sa-token-test.md
@@ -3,3 +3,4 @@
---
此份考卷将测评您对Sa-Token框架的掌握程度(满分100),链接:[https://ks.wjx.top/vj/wFKPziD.aspx](https://ks.wjx.top/vj/wFKPziD.aspx)
+
diff --git a/sa-token-doc/doc/sso/sso-type2.md b/sa-token-doc/doc/sso/sso-type2.md
index b5ff624b..16f5630b 100644
--- a/sa-token-doc/doc/sso/sso-type2.md
+++ b/sa-token-doc/doc/sso/sso-type2.md
@@ -64,7 +64,7 @@
public class SsoServerController {
// SSO-Server端:处理所有SSO相关请求
- @RequestMapping("/sso*")
+ @RequestMapping("/sso/*")
public Object ssoRequest() {
return SaSsoHandle.serverRequest();
}
@@ -76,7 +76,7 @@ public class SsoServerController {
// 配置:未登录时返回的View
.setNotLoginView(() -> {
String msg = "当前会话在SSO-Server端尚未登录,请先访问"
- + " doLogin登录 "
+ + " doLogin登录 "
+ "进行登录之后,刷新页面开始授权";
return msg;
})
@@ -184,13 +184,13 @@ public class SsoClientController {
public String index() {
String str = "Sa-Token SSO-Client 应用端
" +
"当前会话是否登录:" + StpUtil.isLogin() + "
" +
- "登录 " +
- "注销
";
+ "登录 " +
+ "注销
";
return str;
}
// SSO-Client端:处理所有SSO相关请求
- @RequestMapping("/sso*")
+ @RequestMapping("/sso/*")
public Object ssoRequest() {
return SaSsoHandle.clientRequest();
}
@@ -210,7 +210,7 @@ sa-token:
# SSO-相关配置
sso:
# SSO-Server端 单点登录地址
- auth-url: http://sa-sso-server.com:9000/ssoAuth
+ auth-url: http://sa-sso-server.com:9000/sso/auth
# 是否打开单点注销接口
is-slo: true
@@ -311,7 +311,7 @@ public class SaSsoClientApplication {
假设攻击者根据模仿我们的授权地址,巧妙的构造一个URL
-> [http://sa-sso-server.com:9000/ssoAuth?redirect=https://www.baidu.com/](http://sa-sso-server.com:9000/ssoAuth?redirect=https://www.baidu.com/)
+> [http://sa-sso-server.com:9000/sso/auth?redirect=https://www.baidu.com/](http://sa-sso-server.com:9000/sso/auth?redirect=https://www.baidu.com/)
当不知情的小红被诱导访问了这个URL时,它将被重定向至百度首页
@@ -323,7 +323,7 @@ public class SaSsoClientApplication {
造成此漏洞的直接原因就是SSO-Server认证中心没有对 `redirect地址` 进行任何的限制,防范的方法也很简单,就是对`redirect参数`进行校验,如果其不在指定的URL列表中时,拒绝下放ticket
-我们将其配置为一个具体的URL:`allow-url=http://sa-sso-client1.com:9001/ssoLogin`,再次访问上述连接:
+我们将其配置为一个具体的URL:`allow-url=http://sa-sso-client1.com:9001/sso/login`,再次访问上述连接:

@@ -335,7 +335,7 @@ public class SaSsoClientApplication {
| :-------- | :-------- | :-------- | :-------- |
| 配置为* | `*` | 低 | **禁止在生产环境下使用** |
| 配置到域名 | `http://sa-sso-client1.com/*` | 中 | 不建议在生产环境下使用 |
-| 配置到详细地址| `http://sa-sso-client1.com:9001/ssoLogin` | 高 | 可以在生产环境下使用 |
+| 配置到详细地址| `http://sa-sso-client1.com:9001/sso/login` | 高 | 可以在生产环境下使用 |
##### 5.4、疑问:为什么不直接回传Token,而是先回传ticket,再用ticket去查询对应的账号id?
diff --git a/sa-token-doc/doc/sso/sso-type3.md b/sa-token-doc/doc/sso/sso-type3.md
index d2701f30..058c36fd 100644
--- a/sa-token-doc/doc/sso/sso-type3.md
+++ b/sa-token-doc/doc/sso/sso-type3.md
@@ -66,7 +66,7 @@ sa-token:
# 使用Http请求校验ticket
is-http: true
# SSO-Server端 ticket校验地址
- check-ticket-url: http://sa-sso-server.com:9000/ssoCheckTicket
+ check-ticket-url: http://sa-sso-server.com:9000/sso/checkTicket
```
##### 1.5 启动项目测试
@@ -123,7 +123,7 @@ sa-token:
# 打开单点注销功能
is-slo: true
# 单点注销地址
- slo-url: http://sa-sso-server.com:9000/ssoLogout
+ slo-url: http://sa-sso-server.com:9000/sso/logout
# 接口调用秘钥
secretkey: kQwIOrYvnXmSDkwEiFngrKidMcdrgKor
```
diff --git a/sa-token-doc/doc/use/config.md b/sa-token-doc/doc/use/config.md
index adf7de3b..39c3c3c0 100644
--- a/sa-token-doc/doc/use/config.md
+++ b/sa-token-doc/doc/use/config.md
@@ -115,5 +115,5 @@ sa-token:
# SSO-相关配置
sso:
# SSO-Server端 单点登录地址
- auth-url: http://sa-sso-server.com:9000/ssoAuth
+ auth-url: http://sa-sso-server.com:9000/sso/auth
```
\ No newline at end of file
diff --git a/sa-token-plugin/pom.xml b/sa-token-plugin/pom.xml
index f8de1a4d..c3fd2bff 100644
--- a/sa-token-plugin/pom.xml
+++ b/sa-token-plugin/pom.xml
@@ -20,7 +20,7 @@
sa-token-alone-redis
sa-token-dao-redis
sa-token-dao-redis-jackson
-
+
sa-token-quick-login
sa-token-spring-aop
sa-token-temp-jwt
diff --git a/sa-token-plugin/sa-token-oauth2/pom.xml b/sa-token-plugin/sa-token-oauth2/pom.xml
index 3ad0d9c4..5e4d4b3e 100644
--- a/sa-token-plugin/sa-token-oauth2/pom.xml
+++ b/sa-token-plugin/sa-token-oauth2/pom.xml
@@ -11,9 +11,8 @@
jar
- sa-token-dao-redis
+ sa-token-oauth2
sa-token-oauth2
- 1.15.0-alpha
sa-token realization oauth2.0
diff --git a/sa-token-plugin/sa-token-oauth2/src/main/java/cn/dev33/satoken/oauth2/SaOAuth2Manager.java b/sa-token-plugin/sa-token-oauth2/src/main/java/cn/dev33/satoken/oauth2/SaOAuth2Manager.java
index 4cf80017..8c153d21 100644
--- a/sa-token-plugin/sa-token-oauth2/src/main/java/cn/dev33/satoken/oauth2/SaOAuth2Manager.java
+++ b/sa-token-plugin/sa-token-oauth2/src/main/java/cn/dev33/satoken/oauth2/SaOAuth2Manager.java
@@ -1,8 +1,6 @@
package cn.dev33.satoken.oauth2;
import cn.dev33.satoken.oauth2.config.SaOAuth2Config;
-import cn.dev33.satoken.oauth2.logic.SaOAuth2Interface;
-import cn.dev33.satoken.oauth2.logic.SaOAuth2InterfaceDefaultImpl;
/**
* sa-token oauth2 模块 总控类
@@ -31,24 +29,4 @@ public class SaOAuth2Manager {
SaOAuth2Manager.config = config;
}
- /**
- * sa-token-oauth2 逻辑 Bean
- */
- private static SaOAuth2Interface saOAuth2Interface;
- public static SaOAuth2Interface getInterface() {
- if (saOAuth2Interface == null) {
- // 初始化默认值
- synchronized (SaOAuth2Manager.class) {
- if (saOAuth2Interface == null) {
- setInterface(new SaOAuth2InterfaceDefaultImpl());
- }
- }
- }
- return saOAuth2Interface;
- }
- public static void setInterface(SaOAuth2Interface interfaceObj) {
- SaOAuth2Manager.saOAuth2Interface = interfaceObj;
- }
-
-
}
diff --git a/sa-token-plugin/sa-token-oauth2/src/main/java/cn/dev33/satoken/oauth2/logic/SaOAuth2InterfaceDefaultImpl.java b/sa-token-plugin/sa-token-oauth2/src/main/java/cn/dev33/satoken/oauth2/logic/SaOAuth2InterfaceDefaultImpl.java
deleted file mode 100644
index 20d23790..00000000
--- a/sa-token-plugin/sa-token-oauth2/src/main/java/cn/dev33/satoken/oauth2/logic/SaOAuth2InterfaceDefaultImpl.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package cn.dev33.satoken.oauth2.logic;
-
-/**
- * SaOAuth2Interface 默认实现类 (只构建userinfo单个权限)
- * @author kong
- *
- */
-public class SaOAuth2InterfaceDefaultImpl implements SaOAuth2Interface {
-
-
-
-}
diff --git a/sa-token-plugin/sa-token-oauth2/src/main/java/cn/dev33/satoken/oauth2/logic/SaOAuth2Interface.java b/sa-token-plugin/sa-token-oauth2/src/main/java/cn/dev33/satoken/oauth2/logic/SaOAuth2Template.java
similarity index 74%
rename from sa-token-plugin/sa-token-oauth2/src/main/java/cn/dev33/satoken/oauth2/logic/SaOAuth2Interface.java
rename to sa-token-plugin/sa-token-oauth2/src/main/java/cn/dev33/satoken/oauth2/logic/SaOAuth2Template.java
index a4f0281a..58fef9fe 100644
--- a/sa-token-plugin/sa-token-oauth2/src/main/java/cn/dev33/satoken/oauth2/logic/SaOAuth2Interface.java
+++ b/sa-token-plugin/sa-token-oauth2/src/main/java/cn/dev33/satoken/oauth2/logic/SaOAuth2Template.java
@@ -12,7 +12,6 @@ import cn.dev33.satoken.oauth2.model.AccessTokenModel;
import cn.dev33.satoken.oauth2.model.CodeModel;
import cn.dev33.satoken.oauth2.model.RequestAuthModel;
import cn.dev33.satoken.oauth2.util.SaOAuth2Consts;
-import cn.dev33.satoken.oauth2.util.SaOAuth2InsideUtil;
import cn.dev33.satoken.util.SaFoxUtil;
/**
@@ -20,75 +19,75 @@ import cn.dev33.satoken.util.SaFoxUtil;
* @author kong
*
*/
-public interface SaOAuth2Interface {
+public class SaOAuth2Template {
// ------------------- 获取数据
/**
- * [default] 返回此平台所有权限集合
+ * 返回此平台所有权限集合
* @return 此平台所有权限名称集合
*/
- public default List getAppScopeList() {
+ public List getAppScopeList() {
return Arrays.asList("userinfo");
}
/**
- * [default] 返回指定Client签约的所有Scope名称集合
+ * 返回指定Client签约的所有Scope名称集合
* @param clientId 应用id
* @return Scope集合
*/
- public default List getClientScopeList(String clientId) {
+ public List getClientScopeList(String clientId) {
// 默认返回此APP的所有权限
return getAppScopeList();
}
/**
- * [default] 获取指定 LoginId 对指定 Client 已经授权过的所有 Scope
+ * 获取指定 LoginId 对指定 Client 已经授权过的所有 Scope
* @param clientId 应用id
* @param loginId 账号id
* @return Scope集合
*/
- public default List getGrantScopeList(Object loginId, String clientId) {
+ public List getGrantScopeList(Object loginId, String clientId) {
// 默认返回空集合
return Arrays.asList();
}
/**
- * [default] 返回指定Client允许的回调域名, 多个用逗号隔开, *代表不限制
+ * 返回指定Client允许的回调域名, 多个用逗号隔开, *代表不限制
* @param clientId 应用id
* @return domain集合
*/
- public default String getClientDomain(String clientId) {
+ public String getClientDomain(String clientId) {
return "*";
}
/**
- * [default] 返回指定ClientId的ClientSecret
+ * 返回指定ClientId的ClientSecret
* @param clientId 应用id
* @return 此应用的秘钥
*/
- public default String getClientSecret(String clientId) {
+ public String getClientSecret(String clientId) {
return null;
}
/**
- * [default] 根据ClientId和LoginId返回openid
+ * 根据ClientId和LoginId返回openid
* @param clientId 应用id
* @param loginId 账号id
* @return 此账号在此Client下的openid
*/
- public default String getOpenid(String clientId, Object loginId) {
+ public String getOpenid(String clientId, Object loginId) {
return null;
}
/**
- * [default] 根据ClientId和openid返回LoginId
+ * 根据ClientId和openid返回LoginId
* @param clientId 应用id
* @param openid openid
* @return LoginId
*/
- public default Object getLoginId(String clientId, String openid) {
+ public Object getLoginId(String clientId, String openid) {
return null;
}
@@ -96,11 +95,11 @@ public interface SaOAuth2Interface {
// ------------------- 数据校验
/**
- * [default] 检查一个 Client 是否签约了指定的Scope
+ * 检查一个 Client 是否签约了指定的Scope
* @param clientId 应用id
* @param scope 权限
*/
- public default void checkContract(String clientId, String scope) {
+ public void checkContract(String clientId, String scope) {
List clientScopeList = getClientScopeList(clientId);
List scopelist = Arrays.asList(scope.split(","));
if(clientScopeList.containsAll(scopelist) == false) {
@@ -109,26 +108,26 @@ public interface SaOAuth2Interface {
}
/**
- * [default] 指定 loginId 是否对一个 Client 授权给了指定 Scope
+ * 指定 loginId 是否对一个 Client 授权给了指定 Scope
* @param loginId 账号id
* @param clientId 应用id
* @param scope 权限
* @return 是否已经授权
*/
- public default boolean isGrant(Object loginId, String clientId, String scope) {
+ public boolean isGrant(Object loginId, String clientId, String scope) {
List grantScopeList = getGrantScopeList(loginId, clientId);
List scopeList = convertStringToList(scope);
return grantScopeList.containsAll(scopeList);
}
/**
- * [default] 指定Client使用指定url作为回调地址,是否合法
+ * 指定Client使用指定url作为回调地址,是否合法
* @param clientId 应用id
* @param url 指定url
*/
- public default void checkRightUrl(String clientId, String url) {
+ public void checkRightUrl(String clientId, String url) {
// 首先检测url格式
- if(SaOAuth2InsideUtil.isUrl(url) == false) {
+ if(SaFoxUtil.isUrl(url) == false) {
throw new SaTokenException("url格式错误");
}
// ---- 检测
@@ -157,13 +156,13 @@ public interface SaOAuth2Interface {
}
/**
- * [default] 校验code、clientId、clientSecret 三者是否正确
+ * 校验code、clientId、clientSecret 三者是否正确
* @param code 授权码
* @param clientId 应用id
* @param clientSecret 秘钥
* @return CodeModel对象
*/
- public default CodeModel checkCodeIdSecret(String code, String clientId, String clientSecret) {
+ public CodeModel checkCodeIdSecret(String code, String clientId, String clientSecret) {
// 获取授权码信息
CodeModel codeModel = getCode(code);
@@ -188,13 +187,13 @@ public interface SaOAuth2Interface {
}
/**
- * [default] 校验access_token、clientId、clientSecret 三者是否正确
+ * 校验access_token、clientId、clientSecret 三者是否正确
* @param accessToken access_token
* @param clientId 应用id
* @param clientSecret 秘钥
* @return AccessTokenModel对象
*/
- public default AccessTokenModel checkTokenIdSecret(String accessToken, String clientId, String clientSecret) {
+ public AccessTokenModel checkTokenIdSecret(String accessToken, String clientId, String clientSecret) {
// 获取授权码信息
AccessTokenModel tokenModel = getAccessToken(accessToken);
@@ -220,11 +219,11 @@ public interface SaOAuth2Interface {
// ---- 授权码
/**
- * [default] 根据参数生成一个授权码并返回
+ * 根据参数生成一个授权码并返回
* @param authModel 请求授权参数Model
* @return 授权码Model
*/
- public default CodeModel generateCode(RequestAuthModel authModel) {
+ public CodeModel generateCode(RequestAuthModel authModel) {
// 获取参数
String clientId = authModel.getClientId();
@@ -276,28 +275,28 @@ public interface SaOAuth2Interface {
}
/**
- * [default] 根据授权码获得授权码Model
+ * 根据授权码获得授权码Model
* @param code 授权码
* @return 授权码Model
*/
- public default CodeModel getCode(String code) {
+ public CodeModel getCode(String code) {
return (CodeModel)SaManager.getSaTokenDao().getObject(getKeyCodeModel(code));
}
/**
- * [default] 手动更改授权码对象信息
+ * 手动更改授权码对象信息
* @param code 授权码
* @param codeModel 授权码Model
*/
- public default void updateCode(String code, CodeModel codeModel) {
+ public void updateCode(String code, CodeModel codeModel) {
SaManager.getSaTokenDao().updateObject(getKeyCodeModel(code), codeModel);
}
/**
- * [default] 确认授权一个code
+ * 确认授权一个code
* @param code 授权码
*/
- public default void confirmCode(String code) {
+ public void confirmCode(String code) {
// 获取codeModel
CodeModel codeModel = getCode(code);
// 如果该code码已经确认
@@ -310,10 +309,10 @@ public interface SaOAuth2Interface {
}
/**
- * [default] 删除一个授权码
+ * 删除一个授权码
* @param code 授权码
*/
- public default void deleteCode(String code) {
+ public void deleteCode(String code) {
SaManager.getSaTokenDao().deleteObject(getKeyCodeModel(code));
}
@@ -321,11 +320,11 @@ public interface SaOAuth2Interface {
// ------------------- access_token 和 refresh_token 相关
/**
- * [default] 根据授权码Model生成一个access_token
+ * 根据授权码Model生成一个access_token
* @param codeModel 授权码Model
* @return AccessTokenModel
*/
- public default AccessTokenModel generateAccessToken(CodeModel codeModel) {
+ public AccessTokenModel generateAccessToken(CodeModel codeModel) {
// 先校验
if(codeModel == null) {
@@ -347,20 +346,20 @@ public interface SaOAuth2Interface {
}
/**
- * [default] 根据 access_token 获得其Model详细信息
+ * 根据 access_token 获得其Model详细信息
* @param accessToken access_token
* @return AccessTokenModel (授权码Model)
*/
- public default AccessTokenModel getAccessToken(String accessToken) {
+ public AccessTokenModel getAccessToken(String accessToken) {
return (AccessTokenModel)SaManager.getSaTokenDao().getObject(getKeyAccessToken(accessToken));
}
/**
- * [default] 根据 refresh_token 生成一个新的 access_token
+ * 根据 refresh_token 生成一个新的 access_token
* @param refreshToken refresh_token
* @return 新的 access_token
*/
- public default AccessTokenModel refreshAccessToken(String refreshToken) {
+ public AccessTokenModel refreshAccessToken(String refreshToken) {
// 获取Model信息
CodeModel codeModel = getRefreshToken(refreshToken);
if(codeModel == null) {
@@ -376,38 +375,38 @@ public interface SaOAuth2Interface {
}
/**
- * [default] 根据 refresh_token 获得其Model详细信息 (授权码Model)
+ * 根据 refresh_token 获得其Model详细信息 (授权码Model)
* @param refreshToken refresh_token
* @return RefreshToken (授权码Model)
*/
- public default CodeModel getRefreshToken(String refreshToken) {
+ public CodeModel getRefreshToken(String refreshToken) {
return (CodeModel)SaManager.getSaTokenDao().getObject(getKeyRefreshToken(refreshToken));
}
/**
- * [default] 获取 access_token 的有效期
+ * 获取 access_token 的有效期
* @param accessToken access_token
* @return 有效期
*/
- public default long getAccessTokenExpiresIn(String accessToken) {
+ public long getAccessTokenExpiresIn(String accessToken) {
return SaManager.getSaTokenDao().getObjectTimeout(getKeyAccessToken(accessToken));
}
/**
- * [default] 获取 refresh_token 的有效期
+ * 获取 refresh_token 的有效期
* @param refreshToken refresh_token
* @return 有效期
*/
- public default long getRefreshTokenExpiresIn(String refreshToken) {
+ public long getRefreshTokenExpiresIn(String refreshToken) {
return SaManager.getSaTokenDao().getObjectTimeout(getKeyRefreshToken(refreshToken));
}
/**
- * [default] 获取 access_token 所代表的LoginId
+ * 获取 access_token 所代表的LoginId
* @param accessToken access_token
* @return LoginId
*/
- public default Object getLoginIdByAccessToken(String accessToken) {
+ public Object getLoginIdByAccessToken(String accessToken) {
AccessTokenModel tokenModel = SaOAuth2Util.getAccessToken(accessToken);
if(tokenModel == null) {
throw new SaTokenException("无效access_token");
@@ -419,50 +418,50 @@ public interface SaOAuth2Interface {
// ------------------- 自定义策略相关
/**
- * [default] 将指定字符串按照逗号分隔符转化为字符串集合
+ * 将指定字符串按照逗号分隔符转化为字符串集合
* @param str 字符串
* @return 分割后的字符串集合
*/
- public default List convertStringToList(String str) {
+ public List convertStringToList(String str) {
return Arrays.asList(str.split(","));
}
/**
- * [default] 生成授权码
+ * 生成授权码
* @param clientId 应用id
* @param scope 权限
* @param loginId 账号id
* @return 授权码
*/
- public default String createCode(String clientId, String scope, Object loginId) {
+ public String createCode(String clientId, String scope, Object loginId) {
return SaFoxUtil.getRandomString(60).toLowerCase();
}
/**
- * [default] 生成AccessToken
+ * 生成AccessToken
* @param codeModel CodeModel对象
* @return AccessToken
*/
- public default String createAccessToken(CodeModel codeModel) {
+ public String createAccessToken(CodeModel codeModel) {
return SaFoxUtil.getRandomString(60).toLowerCase();
}
/**
- * [default] 生成RefreshToken
+ * 生成RefreshToken
* @param codeModel CodeModel对象
* @return RefreshToken
*/
- public default String createRefreshToken(CodeModel codeModel) {
+ public String createRefreshToken(CodeModel codeModel) {
return SaFoxUtil.getRandomString(60).toLowerCase();
}
/**
- * [default] 在url上拼接上kv参数并返回
+ * 在url上拼接上kv参数并返回
* @param url url
* @param parameStr 参数, 例如 id=1001
* @return 拼接后的url字符串
*/
- public default String splicingParame(String url, String parameStr) {
+ public String splicingParame(String url, String parameStr) {
// 如果参数为空, 直接返回
if(parameStr == null || parameStr.length() == 0) {
return url;
@@ -491,11 +490,11 @@ public interface SaOAuth2Interface {
}
/**
- * [default] 将 CodeModel 转换为 AccessTokenModel
+ * 将 CodeModel 转换为 AccessTokenModel
* @param codeModel CodeModel对象
* @return AccessToken对象
*/
- public default AccessTokenModel converCodeToAccessToken(CodeModel codeModel) {
+ public AccessTokenModel converCodeToAccessToken(CodeModel codeModel) {
if(codeModel == null) {
throw new SaTokenException("无效code");
}
@@ -518,7 +517,7 @@ public interface SaOAuth2Interface {
* @param code 授权码
* @return key
*/
- public default String getKeyCodeModel(String code) {
+ public String getKeyCodeModel(String code) {
return SaManager.getConfig().getTokenName() + ":oauth2:code:" + code;
}
@@ -528,7 +527,7 @@ public interface SaOAuth2Interface {
* @param clientId 应用id
* @return key
*/
- public default String getKeyClientLoginId(Object loginId, String clientId) {
+ public String getKeyClientLoginId(Object loginId, String clientId) {
return SaManager.getConfig().getTokenName() + ":oauth2:newest-code:" + clientId + ":" + loginId;
}
@@ -537,7 +536,7 @@ public interface SaOAuth2Interface {
* @param refreshToken refreshToken
* @return key
*/
- public default String getKeyRefreshToken(String refreshToken) {
+ public String getKeyRefreshToken(String refreshToken) {
return SaManager.getConfig().getTokenName() + ":oauth2:refresh-token:" + refreshToken;
}
@@ -546,7 +545,7 @@ public interface SaOAuth2Interface {
* @param accessToken accessToken
* @return key
*/
- public default String getKeyAccessToken(String accessToken) {
+ public String getKeyAccessToken(String accessToken) {
return SaManager.getConfig().getTokenName() + ":oauth2:access-token:" + accessToken;
}
diff --git a/sa-token-plugin/sa-token-oauth2/src/main/java/cn/dev33/satoken/oauth2/logic/SaOAuth2Util.java b/sa-token-plugin/sa-token-oauth2/src/main/java/cn/dev33/satoken/oauth2/logic/SaOAuth2Util.java
index 64d78b37..5a6ad400 100644
--- a/sa-token-plugin/sa-token-oauth2/src/main/java/cn/dev33/satoken/oauth2/logic/SaOAuth2Util.java
+++ b/sa-token-plugin/sa-token-oauth2/src/main/java/cn/dev33/satoken/oauth2/logic/SaOAuth2Util.java
@@ -2,7 +2,6 @@ package cn.dev33.satoken.oauth2.logic;
import java.util.List;
-import cn.dev33.satoken.oauth2.SaOAuth2Manager;
import cn.dev33.satoken.oauth2.model.AccessTokenModel;
import cn.dev33.satoken.oauth2.model.CodeModel;
import cn.dev33.satoken.oauth2.model.RequestAuthModel;
@@ -14,6 +13,9 @@ import cn.dev33.satoken.oauth2.model.RequestAuthModel;
*/
public class SaOAuth2Util {
+ public static SaOAuth2Template saOAuth2Template = new SaOAuth2Template();
+
+
// ------------------- 获取数据
/**
@@ -21,7 +23,7 @@ public class SaOAuth2Util {
* @return 此平台所有权限名称集合
*/
public static List getAppScopeList() {
- return SaOAuth2Manager.getInterface().getAppScopeList();
+ return saOAuth2Template.getAppScopeList();
}
/**
@@ -30,7 +32,7 @@ public class SaOAuth2Util {
* @return Scope集合
*/
public static List getClientScopeList(String clientId) {
- return SaOAuth2Manager.getInterface().getClientScopeList(clientId);
+ return saOAuth2Template.getClientScopeList(clientId);
}
/**
@@ -40,7 +42,7 @@ public class SaOAuth2Util {
* @return Scope集合
*/
public static List getGrantScopeList(Object loginId, String clientId) {
- return SaOAuth2Manager.getInterface().getGrantScopeList(loginId, clientId);
+ return saOAuth2Template.getGrantScopeList(loginId, clientId);
}
@@ -54,7 +56,7 @@ public class SaOAuth2Util {
* @return 是否已经授权
*/
public static boolean isGrant(Object loginId, String clientId, String scope) {
- return SaOAuth2Manager.getInterface().isGrant(loginId, clientId, scope);
+ return saOAuth2Template.isGrant(loginId, clientId, scope);
}
/**
@@ -65,7 +67,7 @@ public class SaOAuth2Util {
* @return CodeModel对象
*/
public static CodeModel checkCodeIdSecret(String code, String clientId, String clientSecret) {
- return SaOAuth2Manager.getInterface().checkCodeIdSecret(code, clientId, clientSecret);
+ return saOAuth2Template.checkCodeIdSecret(code, clientId, clientSecret);
}
/**
@@ -76,7 +78,7 @@ public class SaOAuth2Util {
* @return AccessTokenModel对象
*/
public static AccessTokenModel checkTokenIdSecret(String accessToken, String clientId, String clientSecret) {
- return SaOAuth2Manager.getInterface().checkTokenIdSecret(accessToken, clientId, clientSecret);
+ return saOAuth2Template.checkTokenIdSecret(accessToken, clientId, clientSecret);
}
@@ -89,7 +91,7 @@ public class SaOAuth2Util {
* @return 授权码Model
*/
public static CodeModel generateCode(RequestAuthModel authModel) {
- return SaOAuth2Manager.getInterface().generateCode(authModel);
+ return saOAuth2Template.generateCode(authModel);
}
/**
@@ -98,7 +100,7 @@ public class SaOAuth2Util {
* @return 授权码Model
*/
public static CodeModel getCode(String code) {
- return SaOAuth2Manager.getInterface().getCode(code);
+ return saOAuth2Template.getCode(code);
}
/**
@@ -107,7 +109,7 @@ public class SaOAuth2Util {
* @param codeModel 授权码Model
*/
public static void updateCode(String code, CodeModel codeModel) {
- SaOAuth2Manager.getInterface().updateCode(code, codeModel);
+ saOAuth2Template.updateCode(code, codeModel);
}
/**
@@ -115,7 +117,7 @@ public class SaOAuth2Util {
* @param code 授权码
*/
public static void confirmCode(String code) {
- SaOAuth2Manager.getInterface().confirmCode(code);
+ saOAuth2Template.confirmCode(code);
}
/**
@@ -123,7 +125,7 @@ public class SaOAuth2Util {
* @param code 授权码
*/
public static void deleteCode(String code) {
- SaOAuth2Manager.getInterface().deleteCode(code);
+ saOAuth2Template.deleteCode(code);
}
/**
@@ -132,7 +134,7 @@ public class SaOAuth2Util {
* @return AccessTokenModel
*/
public static AccessTokenModel generateAccessToken(CodeModel codeModel) {
- return SaOAuth2Manager.getInterface().generateAccessToken(codeModel);
+ return saOAuth2Template.generateAccessToken(codeModel);
}
/**
@@ -141,7 +143,7 @@ public class SaOAuth2Util {
* @return AccessTokenModel (授权码Model)
*/
public static AccessTokenModel getAccessToken(String accessToken) {
- return SaOAuth2Manager.getInterface().getAccessToken(accessToken);
+ return saOAuth2Template.getAccessToken(accessToken);
}
/**
@@ -150,7 +152,7 @@ public class SaOAuth2Util {
* @return 新的 access_token
*/
public static AccessTokenModel refreshAccessToken(String refreshToken) {
- return SaOAuth2Manager.getInterface().refreshAccessToken(refreshToken);
+ return saOAuth2Template.refreshAccessToken(refreshToken);
}
/**
@@ -159,7 +161,7 @@ public class SaOAuth2Util {
* @return RefreshToken (授权码Model)
*/
public static CodeModel getRefreshToken(String refreshToken) {
- return SaOAuth2Manager.getInterface().getRefreshToken(refreshToken);
+ return saOAuth2Template.getRefreshToken(refreshToken);
}
/**
@@ -168,7 +170,7 @@ public class SaOAuth2Util {
* @return 有效期
*/
public static long getAccessTokenExpiresIn(String accessToken) {
- return SaOAuth2Manager.getInterface().getAccessTokenExpiresIn(accessToken);
+ return saOAuth2Template.getAccessTokenExpiresIn(accessToken);
}
/**
@@ -177,7 +179,7 @@ public class SaOAuth2Util {
* @return 有效期
*/
public static long getRefreshTokenExpiresIn(String refreshToken) {
- return SaOAuth2Manager.getInterface().getRefreshTokenExpiresIn(refreshToken);
+ return saOAuth2Template.getRefreshTokenExpiresIn(refreshToken);
}
/**
@@ -186,7 +188,7 @@ public class SaOAuth2Util {
* @return LoginId
*/
public static Object getLoginIdByAccessToken(String accessToken) {
- return SaOAuth2Manager.getInterface().getLoginIdByAccessToken(accessToken);
+ return saOAuth2Template.getLoginIdByAccessToken(accessToken);
}
diff --git a/sa-token-plugin/sa-token-oauth2/src/main/java/cn/dev33/satoken/oauth2/util/SaOAuth2Consts.java b/sa-token-plugin/sa-token-oauth2/src/main/java/cn/dev33/satoken/oauth2/util/SaOAuth2Consts.java
index 129bb2f2..adfee815 100644
--- a/sa-token-plugin/sa-token-oauth2/src/main/java/cn/dev33/satoken/oauth2/util/SaOAuth2Consts.java
+++ b/sa-token-plugin/sa-token-oauth2/src/main/java/cn/dev33/satoken/oauth2/util/SaOAuth2Consts.java
@@ -12,8 +12,4 @@ public class SaOAuth2Consts {
*/
public static final String UNLIMITED_DOMAIN = "*";
-
-
-
-
}
diff --git a/sa-token-plugin/sa-token-oauth2/src/main/java/cn/dev33/satoken/oauth2/util/SaOAuth2InsideUtil.java b/sa-token-plugin/sa-token-oauth2/src/main/java/cn/dev33/satoken/oauth2/util/SaOAuth2InsideUtil.java
deleted file mode 100644
index fdd3b6d0..00000000
--- a/sa-token-plugin/sa-token-oauth2/src/main/java/cn/dev33/satoken/oauth2/util/SaOAuth2InsideUtil.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package cn.dev33.satoken.oauth2.util;
-
-/**
- * sa-token-oauth2 模块内部算法util
- * @author kong
- *
- */
-public class SaOAuth2InsideUtil {
-
- /**
- * 验证URL的正则表达式
- */
- static final String URL_REGEX = "(https?|ftp|file)://[-A-Za-z0-9+&@#/%?=~_|!:,.;]+[-A-Za-z0-9+&@#/%=~_|]";
-
- /**
- * 使用正则表达式判断一个字符串是否为URL
- * @param str 字符串
- * @return 拼接后的url字符串
- */
- public static boolean isUrl(String str) {
- if(str == null) {
- return false;
- }
- return str.toLowerCase().matches(URL_REGEX);
- }
-
-
-}