提供默认 openid 生成算法

This commit is contained in:
click33
2024-08-18 20:58:09 +08:00
parent f0c2949539
commit c17b244452
5 changed files with 54 additions and 28 deletions

View File

@@ -15,6 +15,7 @@
*/
package cn.dev33.satoken.oauth2.config;
import cn.dev33.satoken.oauth2.consts.SaOAuth2Consts;
import cn.dev33.satoken.oauth2.function.SaOAuth2ConfirmViewFunction;
import cn.dev33.satoken.oauth2.function.SaOAuth2DoLoginHandleFunction;
import cn.dev33.satoken.oauth2.function.SaOAuth2NotLoginViewFunction;
@@ -59,9 +60,13 @@ public class SaOAuth2Config implements Serializable {
/** Client-Token 保存的时间(单位:秒) 默认两个小时 */
public long clientTokenTimeout = 60 * 60 * 2;
/** Past-Client-Token 保存的时间(单位:秒) 默认为 -1代表延续 Client-Token有效期 */
/** Past-Client-Token 保存的时间(单位:秒) 默认为 -1代表延续 Client-Token 有效期 */
public long pastClientTokenTimeout = -1;
/** 默认 openid 生成算法中使用的摘要前缀 */
public String openidDigestPrefix = SaOAuth2Consts.OPENID_DEFAULT_DIGEST_PREFIX;
/**
* @return isCode
@@ -213,13 +218,29 @@ public class SaOAuth2Config implements Serializable {
return this;
}
/**
* @return openidDigestPrefix
*/
public String getOpenidDigestPrefix() {
return openidDigestPrefix;
}
/**
* @param openidDigestPrefix 要设置的 openidDigestPrefix
* @return 对象自身
*/
public SaOAuth2Config setOpenidMd5Prefix(String openidDigestPrefix) {
this.openidDigestPrefix = openidDigestPrefix;
return this;
}
// -------------------- SaOAuth2Handle 所有回调函数 --------------------
/**
* OAuth-Server端未登录时返回的View
*/
public SaOAuth2NotLoginViewFunction notLoginView = () -> "当前会话在OAuth-Server认证中心尚未登录";
public SaOAuth2NotLoginViewFunction notLoginView = () -> "当前会话在 OAuth-Server 认证中心尚未登录";
/**
* OAuth-Server端确认授权时返回的View
@@ -234,9 +255,14 @@ public class SaOAuth2Config implements Serializable {
@Override
public String toString() {
return "SaOAuth2Config [isCode=" + isCode + ", isImplicit=" + isImplicit + ", isPassword=" + isPassword
+ ", isClient=" + isClient + ", isNewRefresh=" + isNewRefresh + ", codeTimeout=" + codeTimeout
+ ", accessTokenTimeout=" + accessTokenTimeout + ", refreshTokenTimeout=" + refreshTokenTimeout
+ ", clientTokenTimeout=" + clientTokenTimeout + ", pastClientTokenTimeout=" + pastClientTokenTimeout
+ ", isClient=" + isClient
+ ", isNewRefresh=" + isNewRefresh
+ ", codeTimeout=" + codeTimeout
+ ", accessTokenTimeout=" + accessTokenTimeout
+ ", refreshTokenTimeout=" + refreshTokenTimeout
+ ", clientTokenTimeout=" + clientTokenTimeout
+ ", pastClientTokenTimeout=" + pastClientTokenTimeout
+ ", openidDigestPrefix=" + openidDigestPrefix
+"]";
}

View File

@@ -102,6 +102,10 @@ public class SaOAuth2Consts {
public static String id_token = "id_token";
}
/** 默认 openid 生成算法中使用的前缀 */
public static final String OPENID_DEFAULT_DIGEST_PREFIX = "openid_default_digest_prefix";
/** 表示OK的返回结果 */
public static final String OK = "ok";

View File

@@ -15,8 +15,10 @@
*/
package cn.dev33.satoken.oauth2.data.loader;
import cn.dev33.satoken.oauth2.SaOAuth2Manager;
import cn.dev33.satoken.oauth2.data.model.loader.SaClientModel;
import cn.dev33.satoken.oauth2.exception.SaOAuth2Exception;
import cn.dev33.satoken.secure.SaSecureUtil;
/**
* Sa-Token OAuth2 数据加载器
@@ -36,18 +38,6 @@ public interface SaOAuth2DataLoader {
return null;
}
/**
* 根据ClientId 和 LoginId 获取openid
*
* @param clientId 应用id
* @param loginId 账号id
* @return 此账号在此Client下的openid
*/
default String getOpenid(String clientId, Object loginId) {
return null;
}
/**
* 根据 id 获取 Client 信息,不允许为 null
*
@@ -62,6 +52,15 @@ public interface SaOAuth2DataLoader {
return clientModel;
}
/**
* 根据ClientId 和 LoginId 获取openid
*
* @param clientId 应用id
* @param loginId 账号id
* @return 此账号在此Client下的openid
*/
default String getOpenid(String clientId, Object loginId) {
return SaSecureUtil.md5(SaOAuth2Manager.getConfig().getOpenidDigestPrefix() + "_" + clientId + "_" + loginId);
}
}