|
|
@@ -2,6 +2,7 @@ package cn.reghao.tnb.account.app.service.impl;
|
|
|
|
|
|
import cn.reghao.jutil.jdk.security.RandomString;
|
|
|
import cn.reghao.jutil.jdk.security.RsaCryptor;
|
|
|
+import cn.reghao.jutil.jdk.string.IDObfuscation;
|
|
|
import cn.reghao.tnb.account.api.constant.TokenType;
|
|
|
import cn.reghao.tnb.account.app.db.mapper.LoginAttemptsMapper;
|
|
|
import cn.reghao.tnb.account.app.model.constant.LoginPlat;
|
|
|
@@ -49,10 +50,12 @@ public class AccountTokenServiceImpl implements AccountTokenService {
|
|
|
private final UserAccountMapper userAccountMapper;
|
|
|
private final LoginAttemptsMapper loginAttemptsMapper;
|
|
|
private final PubkeyService pubkeyService;
|
|
|
+ private final IDObfuscation userIdObfuscation;
|
|
|
|
|
|
public AccountTokenServiceImpl(RedisOps redisOps, RedisString redisString, RedisStringObject redisStringObject,
|
|
|
UserAccountMapper userAccountMapper, LoginAttemptsMapper loginAttemptsMapper,
|
|
|
- ServerProperties serverProperties, PubkeyService pubkeyService) {
|
|
|
+ ServerProperties serverProperties, PubkeyService pubkeyService,
|
|
|
+ IDObfuscation userIdObfuscation) {
|
|
|
long sessionTimeout = serverProperties.getServlet().getSession().getTimeout().getSeconds();
|
|
|
serverProperties.getTomcat().getBasedir();
|
|
|
this.redisOps = redisOps;
|
|
|
@@ -61,6 +64,7 @@ public class AccountTokenServiceImpl implements AccountTokenService {
|
|
|
this.userAccountMapper = userAccountMapper;
|
|
|
this.loginAttemptsMapper = loginAttemptsMapper;
|
|
|
this.pubkeyService = pubkeyService;
|
|
|
+ this.userIdObfuscation = userIdObfuscation;
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
@@ -134,7 +138,8 @@ public class AccountTokenServiceImpl implements AccountTokenService {
|
|
|
int plat = refreshPayload.getPlat();
|
|
|
String loginId = refreshPayload.getLoginId();
|
|
|
long userId = refreshPayload.getUserId();
|
|
|
- Object object = redisStringObject.get(RedisKeys.getAuthTokenKey(userId, plat, loginId));
|
|
|
+ String userIdStr = userIdObfuscation.obfuscate(userId);
|
|
|
+ Object object = redisStringObject.get(RedisKeys.getAuthTokenKey(userIdStr, plat, loginId));
|
|
|
AccountAuthToken authToken = (AccountAuthToken) object;
|
|
|
|
|
|
AccountToken accountToken = grantUserToken(authToken);
|
|
|
@@ -148,7 +153,8 @@ public class AccountTokenServiceImpl implements AccountTokenService {
|
|
|
|
|
|
@Override
|
|
|
public AccountToken grantUserToken(AccountAuthToken authToken) {
|
|
|
- long userId = authToken.getUserId();
|
|
|
+ long userId1 = authToken.getUserId();
|
|
|
+ String userId = userIdObfuscation.obfuscate(userId1);
|
|
|
int plat = authToken.getPlat();
|
|
|
long accessExpireIn = 1000L*3600*24*7;
|
|
|
long accessExpireAt = System.currentTimeMillis() + accessExpireIn;
|
|
|
@@ -263,11 +269,12 @@ public class AccountTokenServiceImpl implements AccountTokenService {
|
|
|
}
|
|
|
|
|
|
private void revokeUserToken(long userId, int plat, String loginId) {
|
|
|
- String refreshToken = redisString.get(RedisKeys.getRefreshTokenKey(userId, loginId));
|
|
|
- String accessToken = redisString.get(RedisKeys.getAccessTokenKey(userId, loginId));
|
|
|
- String[] keys = List.of(RedisKeys.getRefreshTokenKey(userId, loginId),
|
|
|
- RedisKeys.getAccessTokenKey(userId, loginId),
|
|
|
- RedisKeys.getAuthTokenKey(userId ,plat, loginId),
|
|
|
+ String userIdStr = userIdObfuscation.obfuscate(userId);
|
|
|
+ String refreshToken = redisString.get(RedisKeys.getRefreshTokenKey(userIdStr, loginId));
|
|
|
+ String accessToken = redisString.get(RedisKeys.getAccessTokenKey(userIdStr, loginId));
|
|
|
+ String[] keys = List.of(RedisKeys.getRefreshTokenKey(userIdStr, loginId),
|
|
|
+ RedisKeys.getAccessTokenKey(userIdStr, loginId),
|
|
|
+ RedisKeys.getAuthTokenKey(userIdStr ,plat, loginId),
|
|
|
RedisKeys.getRefreshSignKeyKey(refreshToken),
|
|
|
RedisKeys.getAccessSignKeyKey(accessToken))
|
|
|
.toArray(new String[0]);
|