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

🐛 Fixed a bug.

上级 e90a2c27
...@@ -30,6 +30,8 @@ import com.fujieid.jap.ids.model.enums.ErrorResponse; ...@@ -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.model.enums.GrantType;
import com.fujieid.jap.ids.util.OauthUtil; import com.fujieid.jap.ids.util.OauthUtil;
import java.io.Serializable;
/** /**
* oauth 2.0 related methods * oauth 2.0 related methods
* *
...@@ -89,7 +91,8 @@ public class Oauth2ServiceImpl implements Oauth2Service { ...@@ -89,7 +91,8 @@ public class Oauth2ServiceImpl implements Oauth2Service {
@Override @Override
public AuthCode getCodeInfo(String code) { 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 @Override
......
...@@ -15,6 +15,7 @@ ...@@ -15,6 +15,7 @@
*/ */
package com.fujieid.jap.ids.util; package com.fujieid.jap.ids.util;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.codec.Base64; import cn.hutool.core.codec.Base64;
import cn.hutool.core.util.ArrayUtil; import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.util.RandomUtil; import cn.hutool.core.util.RandomUtil;
...@@ -29,9 +30,11 @@ import com.fujieid.jap.ids.model.enums.ErrorResponse; ...@@ -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.model.enums.GrantType;
import com.fujieid.jap.ids.service.IdsSecretService; import com.fujieid.jap.ids.service.IdsSecretService;
import com.fujieid.jap.ids.service.Oauth2Service; import com.fujieid.jap.ids.service.Oauth2Service;
import com.xkcoding.http.util.MapUtil;
import com.xkcoding.json.util.StringUtil; import com.xkcoding.json.util.StringUtil;
import org.jose4j.base64url.Base64Url; import org.jose4j.base64url.Base64Url;
import java.io.Serializable;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.*; import java.util.*;
...@@ -257,9 +260,9 @@ public class OauthUtil { ...@@ -257,9 +260,9 @@ public class OauthUtil {
* @param expiresIn The expiration time of the access token in the client detail * @param expiresIn The expiration time of the access token in the client detail
* @return long * @return long
*/ */
public static LocalDateTime getAccessTokenExpiresAt(Long expiresIn) { public static Date getAccessTokenExpiresAt(Long expiresIn) {
expiresIn = getAccessTokenExpiresIn(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 { ...@@ -268,9 +271,9 @@ public class OauthUtil {
* @param expiresIn The expiration time of the refresh token in the client detail * @param expiresIn The expiration time of the refresh token in the client detail
* @return long * @return long
*/ */
public static LocalDateTime getRefreshTokenExpiresAt(Long expiresIn) { public static Date getRefreshTokenExpiresAt(Long expiresIn) {
expiresIn = getRefreshTokenExpiresIn(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 { ...@@ -279,9 +282,9 @@ public class OauthUtil {
* @param expiresIn The expiration time of the code in the client detail * @param expiresIn The expiration time of the code in the client detail
* @return long * @return long
*/ */
public static LocalDateTime getCodeExpiresAt(Long expiresIn) { public static Date getCodeExpiresAt(Long expiresIn) {
expiresIn = getCodeExpiresIn(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 { ...@@ -290,9 +293,9 @@ public class OauthUtil {
* @param expiresIn The expiration time of the id token in the client detail * @param expiresIn The expiration time of the id token in the client detail
* @return long * @return long
*/ */
public static LocalDateTime getIdTokenExpiresAt(Long expiresIn) { public static Date getIdTokenExpiresAt(Long expiresIn) {
expiresIn = getIdTokenExpiresIn(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 { ...@@ -384,4 +387,13 @@ public class OauthUtil {
return Base64Url.encode(RandomUtil.randomString(50), "UTF-8"); 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; ...@@ -27,8 +27,9 @@ import com.fujieid.jap.ids.model.enums.TokenAuthMethod;
import com.fujieid.jap.ids.service.IdsTokenService; import com.fujieid.jap.ids.service.IdsTokenService;
import com.xkcoding.json.util.StringUtil; import com.xkcoding.json.util.StringUtil;
import java.time.LocalDateTime; import java.io.Serializable;
import java.util.Collections; import java.util.Collections;
import java.util.Date;
import java.util.List; import java.util.List;
/** /**
...@@ -189,9 +190,9 @@ public class TokenUtil { ...@@ -189,9 +190,9 @@ public class TokenUtil {
throw new InvalidTokenException(ErrorResponse.INVALID_TOKEN); 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); throw new InvalidTokenException(ErrorResponse.EXPIRED_TOKEN);
} }
...@@ -205,9 +206,9 @@ public class TokenUtil { ...@@ -205,9 +206,9 @@ public class TokenUtil {
throw new InvalidTokenException(ErrorResponse.INVALID_TOKEN); 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); throw new InvalidTokenException(ErrorResponse.EXPIRED_TOKEN);
} }
} }
...@@ -218,7 +219,8 @@ public class TokenUtil { ...@@ -218,7 +219,8 @@ public class TokenUtil {
} }
accessToken = BearerToken.parse(accessToken); accessToken = BearerToken.parse(accessToken);
String token = IdsConsts.OAUTH_ACCESS_TOKEN_CACHE_KEY + 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) { public static AccessToken getByRefreshToken(String refreshToken) {
...@@ -226,6 +228,7 @@ public class TokenUtil { ...@@ -226,6 +228,7 @@ public class TokenUtil {
return null; return null;
} }
String token = IdsConsts.OAUTH_REFRESH_TOKEN_CACHE_KEY + refreshToken; 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.
先完成此消息的编辑!
想要评论请 注册