SaSsoConfig 新增配置 isCheckSign(是否校验参数签名),方便本地开发时的调试。

This commit is contained in:
click33 2024-04-27 06:48:03 +08:00
parent c8a5b922a2
commit 2c87e47b2b
2 changed files with 43 additions and 12 deletions

View File

@ -36,14 +36,14 @@ public class SaSsoConfig implements Serializable {
private static final long serialVersionUID = -6541180061782004705L; private static final long serialVersionUID = -6541180061782004705L;
// ----------------- Server端相关配置 // ----------------- Server端相关配置
/** /**
* 指定当前系统集成 SSO 时使用的模式约定型配置项不对代码逻辑产生任何影响 * 指定当前系统集成 SSO 时使用的模式约定型配置项不对代码逻辑产生任何影响
*/ */
public String mode = ""; public String mode = "";
/** /**
* Ticket有效期 (单位: ) * Ticket有效期 (单位: )
*/ */
@ -62,9 +62,9 @@ public class SaSsoConfig implements Serializable {
/** /**
* 是否打开模式三此值为 true 时将使用 http 请求校验ticket值单点注销获取userinfo * 是否打开模式三此值为 true 时将使用 http 请求校验ticket值单点注销获取userinfo
*/ */
public Boolean isHttp = false; public Boolean isHttp = false;
// ----------------- Client端相关配置 // ----------------- Client端相关配置
// /** // /**
@ -127,6 +127,11 @@ public class SaSsoConfig implements Serializable {
*/ */
public String serverUrl; public String serverUrl;
/**
* 是否校验参数签名方便本地调试用的一个配置项生产环境请务必为true
*/
public Boolean isCheckSign = true;
/** /**
* 获取 指定当前系统集成 SSO 时使用的模式约定型配置项不对代码逻辑产生任何影响 * 获取 指定当前系统集成 SSO 时使用的模式约定型配置项不对代码逻辑产生任何影响
@ -337,6 +342,25 @@ public class SaSsoConfig implements Serializable {
return this; 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 @Override
public String toString() { public String toString() {
return "SaSsoConfig [" return "SaSsoConfig ["
@ -353,6 +377,7 @@ public class SaSsoConfig implements Serializable {
+ ", sloUrl=" + sloUrl + ", sloUrl=" + sloUrl
+ ", ssoLogoutCall=" + ssoLogoutCall + ", ssoLogoutCall=" + ssoLogoutCall
+ ", serverUrl=" + serverUrl + ", serverUrl=" + serverUrl
+ ", isCheckSign=" + isCheckSign
+ "]"; + "]";
} }
@ -412,7 +437,7 @@ public class SaSsoConfig implements Serializable {
* SSO-Server端未登录时返回的View * SSO-Server端未登录时返回的View
*/ */
public Supplier<Object> notLoginView = () -> { public Supplier<Object> notLoginView = () -> {
return "当前会话在SSO-Server认证中心尚未登录"; return "当前会话在SSO-Server认证中心尚未登录(当前未配置登录视图)";
}; };
/** /**
@ -438,7 +463,7 @@ public class SaSsoConfig implements Serializable {
/** /**
* @param notLoginView SSO-Server端未登录时返回的View * @param notLoginView SSO-Server端未登录时返回的View
* @return 对象自身 * @return 对象自身
*/ */
public SaSsoConfig setNotLoginView(Supplier<Object> notLoginView) { public SaSsoConfig setNotLoginView(Supplier<Object> notLoginView) {

View File

@ -132,7 +132,7 @@ public class SaSsoProcessor {
*/ */
public Object ssoCheckTicket() { public Object ssoCheckTicket() {
ParamName paramName = ssoTemplate.paramName; ParamName paramName = ssoTemplate.paramName;
// 1获取参数 // 1获取参数
SaRequest req = SaHolder.getRequest(); SaRequest req = SaHolder.getRequest();
String client = req.getParam(paramName.client); String client = req.getParam(paramName.client);
@ -140,8 +140,10 @@ public class SaSsoProcessor {
String sloCallback = req.getParam(paramName.ssoLogoutCall); String sloCallback = req.getParam(paramName.ssoLogoutCall);
// 2校验签名 // 2校验签名
ssoTemplate.getSignTemplate().checkRequest(req, if(ssoTemplate.getSsoConfig().getIsCheckSign()) {
paramName.client, paramName.ticket, paramName.ssoLogoutCall); ssoTemplate.getSignTemplate().checkRequest(req,
paramName.client, paramName.ticket, paramName.ssoLogoutCall);
}
// 3校验ticket获取 loginId // 3校验ticket获取 loginId
Object loginId = ssoTemplate.checkTicket(ticket, client); Object loginId = ssoTemplate.checkTicket(ticket, client);
@ -210,8 +212,10 @@ public class SaSsoProcessor {
SaRequest req = SaHolder.getRequest(); SaRequest req = SaHolder.getRequest();
String loginId = req.getParam(paramName.loginId); String loginId = req.getParam(paramName.loginId);
// step.1 校验签名 // step.1 校验签名
ssoTemplate.getSignTemplate().checkRequest(req, paramName.loginId); if(ssoTemplate.getSsoConfig().getIsCheckSign()) {
ssoTemplate.getSignTemplate().checkRequest(req, paramName.loginId);
}
// step.2 单点注销 // step.2 单点注销
ssoTemplate.ssoLogout(loginId); ssoTemplate.ssoLogout(loginId);
@ -392,7 +396,9 @@ public class SaSsoProcessor {
String loginId = req.getParamNotNull(paramName.loginId); String loginId = req.getParamNotNull(paramName.loginId);
// 校验参数签名 // 校验参数签名
ssoTemplate.getSignTemplate().checkRequest(req, paramName.loginId); if(ssoTemplate.getSsoConfig().getIsCheckSign()) {
ssoTemplate.getSignTemplate().checkRequest(req, paramName.loginId);
}
// 注销当前应用端会话 // 注销当前应用端会话
stpLogic.logout(loginId); stpLogic.logout(loginId);