From 902041b1ed0943510311853f7ff59095afdb0a65 Mon Sep 17 00:00:00 2001 From: "yadong.zhang" Date: Thu, 21 Oct 2021 21:30:28 +0800 Subject: [PATCH] :bug: Fixed a bug. --- .../jap/ids/service/Oauth2ServiceImpl.java | 5 +++- .../com/fujieid/jap/ids/util/OauthUtil.java | 28 +++++++++++++------ .../com/fujieid/jap/ids/util/TokenUtil.java | 17 ++++++----- 3 files changed, 34 insertions(+), 16 deletions(-) diff --git a/jap-ids/src/main/java/com/fujieid/jap/ids/service/Oauth2ServiceImpl.java b/jap-ids/src/main/java/com/fujieid/jap/ids/service/Oauth2ServiceImpl.java index a57a490..2201feb 100644 --- a/jap-ids/src/main/java/com/fujieid/jap/ids/service/Oauth2ServiceImpl.java +++ b/jap-ids/src/main/java/com/fujieid/jap/ids/service/Oauth2ServiceImpl.java @@ -30,6 +30,8 @@ import com.fujieid.jap.ids.model.enums.ErrorResponse; import com.fujieid.jap.ids.model.enums.GrantType; import com.fujieid.jap.ids.util.OauthUtil; +import java.io.Serializable; + /** * oauth 2.0 related methods * @@ -89,7 +91,8 @@ public class Oauth2ServiceImpl implements Oauth2Service { @Override public AuthCode getCodeInfo(String code) { - return (AuthCode) JapIds.getContext().getCache().get(IdsConsts.OAUTH_CODE_CACHE_KEY + code); + Serializable serializable = JapIds.getContext().getCache().get(IdsConsts.OAUTH_CODE_CACHE_KEY + code); + return OauthUtil.objToBean(serializable, AuthCode.class); } @Override diff --git a/jap-ids/src/main/java/com/fujieid/jap/ids/util/OauthUtil.java b/jap-ids/src/main/java/com/fujieid/jap/ids/util/OauthUtil.java index 2e2cd66..fc793c7 100644 --- a/jap-ids/src/main/java/com/fujieid/jap/ids/util/OauthUtil.java +++ b/jap-ids/src/main/java/com/fujieid/jap/ids/util/OauthUtil.java @@ -15,6 +15,7 @@ */ package com.fujieid.jap.ids.util; +import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.codec.Base64; import cn.hutool.core.util.ArrayUtil; import cn.hutool.core.util.RandomUtil; @@ -29,9 +30,11 @@ import com.fujieid.jap.ids.model.enums.ErrorResponse; import com.fujieid.jap.ids.model.enums.GrantType; import com.fujieid.jap.ids.service.IdsSecretService; import com.fujieid.jap.ids.service.Oauth2Service; +import com.xkcoding.http.util.MapUtil; import com.xkcoding.json.util.StringUtil; import org.jose4j.base64url.Base64Url; +import java.io.Serializable; import java.nio.charset.StandardCharsets; import java.time.LocalDateTime; import java.util.*; @@ -257,9 +260,9 @@ public class OauthUtil { * @param expiresIn The expiration time of the access token in the client detail * @return long */ - public static LocalDateTime getAccessTokenExpiresAt(Long expiresIn) { + public static Date getAccessTokenExpiresAt(Long expiresIn) { expiresIn = getAccessTokenExpiresIn(expiresIn); - return DateUtil.ofEpochSecond(System.currentTimeMillis() + expiresIn * 1000, null); + return DateUtil.offsetSecond(new Date(), expiresIn.intValue()); } /** @@ -268,9 +271,9 @@ public class OauthUtil { * @param expiresIn The expiration time of the refresh token in the client detail * @return long */ - public static LocalDateTime getRefreshTokenExpiresAt(Long expiresIn) { + public static Date getRefreshTokenExpiresAt(Long expiresIn) { expiresIn = getRefreshTokenExpiresIn(expiresIn); - return DateUtil.ofEpochSecond(System.currentTimeMillis() + expiresIn * 1000, null); + return DateUtil.offsetSecond(new Date(), expiresIn.intValue()); } /** @@ -279,9 +282,9 @@ public class OauthUtil { * @param expiresIn The expiration time of the code in the client detail * @return long */ - public static LocalDateTime getCodeExpiresAt(Long expiresIn) { + public static Date getCodeExpiresAt(Long expiresIn) { expiresIn = getCodeExpiresIn(expiresIn); - return DateUtil.ofEpochSecond(System.currentTimeMillis() + expiresIn * 1000, null); + return DateUtil.offsetSecond(new Date(), expiresIn.intValue()); } /** @@ -290,9 +293,9 @@ public class OauthUtil { * @param expiresIn The expiration time of the id token in the client detail * @return long */ - public static LocalDateTime getIdTokenExpiresAt(Long expiresIn) { + public static Date getIdTokenExpiresAt(Long expiresIn) { expiresIn = getIdTokenExpiresIn(expiresIn); - return DateUtil.ofEpochSecond(System.currentTimeMillis() + expiresIn * 1000, null); + return DateUtil.offsetSecond(new Date(), expiresIn.intValue()); } /** @@ -384,4 +387,13 @@ public class OauthUtil { return Base64Url.encode(RandomUtil.randomString(50), "UTF-8"); } + public static T objToBean(Serializable serializable, Class clazz) { + if (serializable.getClass() == clazz) { + return (T) serializable; + } + if (serializable instanceof Map) { + return BeanUtil.mapToBean((Map) serializable, clazz, false, null); + } + return null; + } } diff --git a/jap-ids/src/main/java/com/fujieid/jap/ids/util/TokenUtil.java b/jap-ids/src/main/java/com/fujieid/jap/ids/util/TokenUtil.java index 8bd7cf1..6b662a0 100644 --- a/jap-ids/src/main/java/com/fujieid/jap/ids/util/TokenUtil.java +++ b/jap-ids/src/main/java/com/fujieid/jap/ids/util/TokenUtil.java @@ -27,8 +27,9 @@ import com.fujieid.jap.ids.model.enums.TokenAuthMethod; import com.fujieid.jap.ids.service.IdsTokenService; import com.xkcoding.json.util.StringUtil; -import java.time.LocalDateTime; +import java.io.Serializable; import java.util.Collections; +import java.util.Date; import java.util.List; /** @@ -189,9 +190,9 @@ public class TokenUtil { throw new InvalidTokenException(ErrorResponse.INVALID_TOKEN); } - LocalDateTime nowDateTime = DateUtil.nowDate(); + Date nowDate = new Date(); - if (token.getAccessTokenExpiration().isBefore(nowDateTime)) { + if (token.getAccessTokenExpiration().before(nowDate)) { throw new InvalidTokenException(ErrorResponse.EXPIRED_TOKEN); } @@ -205,9 +206,9 @@ public class TokenUtil { throw new InvalidTokenException(ErrorResponse.INVALID_TOKEN); } - LocalDateTime nowDateTime = DateUtil.nowDate(); + Date nowDate = new Date(); - if (token.getRefreshTokenExpiration().isBefore(nowDateTime)) { + if (token.getRefreshTokenExpiration().before(nowDate)) { throw new InvalidTokenException(ErrorResponse.EXPIRED_TOKEN); } } @@ -218,7 +219,8 @@ public class TokenUtil { } accessToken = BearerToken.parse(accessToken); String token = IdsConsts.OAUTH_ACCESS_TOKEN_CACHE_KEY + accessToken; - return (AccessToken) JapIds.getContext().getCache().get(token); + Serializable serializable = JapIds.getContext().getCache().get(token); + return OauthUtil.objToBean(serializable, AccessToken.class); } public static AccessToken getByRefreshToken(String refreshToken) { @@ -226,6 +228,7 @@ public class TokenUtil { return null; } String token = IdsConsts.OAUTH_REFRESH_TOKEN_CACHE_KEY + refreshToken; - return (AccessToken) JapIds.getContext().getCache().get(token); + Serializable serializable = JapIds.getContext().getCache().get(token); + return OauthUtil.objToBean(serializable, AccessToken.class); } } -- GitLab