提交 902041b1 编写于 作者: 智布道's avatar 智布道 👁

🐛 Fixed a bug.

上级 e90a2c27
......@@ -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
......
......@@ -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> T objToBean(Serializable serializable, Class<T> clazz) {
if (serializable.getClass() == clazz) {
return (T) serializable;
}
if (serializable instanceof Map) {
return BeanUtil.mapToBean((Map) serializable, clazz, false, null);
}
return null;
}
}
......@@ -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);
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册