|
@@ -1,8 +1,12 @@
|
|
|
package com.dragonsoft.dcuc.approve.business.impl;
|
|
|
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
+import com.alibaba.fastjson.JSON;
|
|
|
import com.dragonsoft.dcuc.approve.business.ICacheBusiness;
|
|
|
import com.dragonsoft.dcuc.approve.constants.ApproveRedisConstants;
|
|
|
+import com.dragonsoft.dcuc.approve.dto.zerotrust.AppTokenInfoDTO;
|
|
|
+import com.dragonsoft.dcuc.approve.dto.zerotrust.UserTokenInfoDTO;
|
|
|
+import com.dragonsoft.dcuc.approve.enumresources.ZeroTrustTokenActionEnum;
|
|
|
import com.dragonsoft.duceap.commons.util.date.DateConst;
|
|
|
import com.dragonsoft.duceap.commons.util.date.DateUtils;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
@@ -12,6 +16,7 @@ import org.springframework.stereotype.Component;
|
|
|
|
|
|
import java.text.ParseException;
|
|
|
import java.util.Date;
|
|
|
+import java.util.concurrent.TimeUnit;
|
|
|
|
|
|
/**
|
|
|
* <p>
|
|
@@ -71,4 +76,72 @@ public class RedisCacheBusinessImpl implements ICacheBusiness {
|
|
|
return null;
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void appTokenActionHandle(AppTokenInfoDTO tokenInfo, String action) {
|
|
|
+ if (null == tokenInfo) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if (ZeroTrustTokenActionEnum.OFFLINE.getValue().equals(action)) {
|
|
|
+ deleteAppToken(tokenInfo);
|
|
|
+ } else if (ZeroTrustTokenActionEnum.ONLINE.getValue().equals(action)) {
|
|
|
+ cacheAppToken(tokenInfo);
|
|
|
+ } else if (ZeroTrustTokenActionEnum.RENEW.getValue().equals(action)) {
|
|
|
+ renewAppToken(tokenInfo);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void cacheAppToken(AppTokenInfoDTO appToken) {
|
|
|
+ log.info("缓存的应用令牌 令牌id:{}, appId:{}", appToken.getAppTokenId(), appToken.getAppId());
|
|
|
+
|
|
|
+ long tokenExpireTime = appToken.getExpireAt().getTime();
|
|
|
+ long redisExpire = (tokenExpireTime - System.currentTimeMillis()) / 1000;
|
|
|
+ stringRedisTemplate.opsForValue().set(appToken.getAppTokenId(), JSON.toJSONString(appToken), redisExpire, TimeUnit.SECONDS);
|
|
|
+ }
|
|
|
+
|
|
|
+ private void renewAppToken(AppTokenInfoDTO tokenInfo) {
|
|
|
+ log.info("续期应用令牌");
|
|
|
+ cacheAppToken(tokenInfo);
|
|
|
+ }
|
|
|
+
|
|
|
+ private void deleteAppToken(AppTokenInfoDTO tokenInfo) {
|
|
|
+ log.info("删除缓存的应用令牌 令牌id:{}, appId:{}", tokenInfo.getAppTokenId(), tokenInfo.getAppId());
|
|
|
+ stringRedisTemplate.delete(tokenInfo.getAppTokenId());
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void userTokenActionHandle(UserTokenInfoDTO tokenInfo, String action) {
|
|
|
+ if (null == tokenInfo) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if (ZeroTrustTokenActionEnum.OFFLINE.getValue().equals(action)) {
|
|
|
+ deleteUserToken(tokenInfo);
|
|
|
+ } else if (ZeroTrustTokenActionEnum.ONLINE.getValue().equals(action)) {
|
|
|
+ cacheUserToken(tokenInfo);
|
|
|
+ } else if (ZeroTrustTokenActionEnum.RENEW.getValue().equals(action)) {
|
|
|
+ renewUserToken(tokenInfo);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void renewUserToken(UserTokenInfoDTO tokenInfo) {
|
|
|
+ log.info("续期用户令牌");
|
|
|
+ cacheUserToken(tokenInfo);
|
|
|
+ }
|
|
|
+
|
|
|
+ private void cacheUserToken(UserTokenInfoDTO tokenInfo) {
|
|
|
+ log.info("缓存用户令牌 令牌id:{}, pid:{}", tokenInfo.getUserTokenId(), tokenInfo.getPid());
|
|
|
+ // 缓存人员令牌
|
|
|
+ long tokenExpireTime = tokenInfo.getExpireAt().getTime();
|
|
|
+ long redisExpire = (tokenExpireTime - System.currentTimeMillis()) / 1000;
|
|
|
+ stringRedisTemplate.opsForValue().set(tokenInfo.getUserTokenId(), JSON.toJSONString(tokenInfo), redisExpire, TimeUnit.SECONDS);
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ private void deleteUserToken(UserTokenInfoDTO tokenInfo) {
|
|
|
+ log.info("删除缓存的用户令牌 令牌id:{}, pid:{}", tokenInfo.getUserTokenId(), tokenInfo.getPid());
|
|
|
+ // 删除令牌
|
|
|
+ stringRedisTemplate.delete(tokenInfo.getUserTokenId());
|
|
|
+ }
|
|
|
+
|
|
|
}
|