diff --git a/epmet-commons/epmet-commons-security/src/main/java/com/epmet/commons/security/jwt/JwtUtils.java b/epmet-commons/epmet-commons-security/src/main/java/com/epmet/commons/security/jwt/JwtUtils.java index 23b738d623..8df0b6cd8f 100644 --- a/epmet-commons/epmet-commons-security/src/main/java/com/epmet/commons/security/jwt/JwtUtils.java +++ b/epmet-commons/epmet-commons-security/src/main/java/com/epmet/commons/security/jwt/JwtUtils.java @@ -78,6 +78,25 @@ public class JwtUtils { .compact(); } + /** + * @Description 创建Token + * @return Token + * @param claims 载荷信息 + * @param expireTime 过期时间 + * @param secret 秘钥 + * @author wxz + * @date 2021.03.26 13:33 + */ + public String createToken(Map claims, Date expireTime, String secret) { + return Jwts.builder() + .setHeaderParam("typ", "JWT") + .setClaims(claims) + .setIssuedAt(new Date()) + .setExpiration(expireTime) + .signWith(SignatureAlgorithm.HS512, secret) + .compact(); + } + /** * token是否过期 * diff --git a/epmet-commons/epmet-commons-security/src/main/java/com/epmet/commons/security/sign/openapi/OpenApiSignUtils.java b/epmet-commons/epmet-commons-security/src/main/java/com/epmet/commons/security/sign/openapi/OpenApiSignUtils.java index ef3e31f6aa..f96a3777bb 100644 --- a/epmet-commons/epmet-commons-security/src/main/java/com/epmet/commons/security/sign/openapi/OpenApiSignUtils.java +++ b/epmet-commons/epmet-commons-security/src/main/java/com/epmet/commons/security/sign/openapi/OpenApiSignUtils.java @@ -60,8 +60,8 @@ public class OpenApiSignUtils { } public static void main(String[] args) { - //generateGetAccessTokenSign(); - generateGetOrgDetailSign(); + generateGetAccessTokenSign(); + //generateGetOrgDetailSign(); } private static void generateGetAccessTokenSign() { diff --git a/epmet-module/epmet-ext/epmet-ext-client/src/main/java/com/epmet/dto/result/openapi/GetAccessTokenResultDTO.java b/epmet-module/epmet-ext/epmet-ext-client/src/main/java/com/epmet/dto/result/openapi/GetAccessTokenResultDTO.java new file mode 100644 index 0000000000..a913b25945 --- /dev/null +++ b/epmet-module/epmet-ext/epmet-ext-client/src/main/java/com/epmet/dto/result/openapi/GetAccessTokenResultDTO.java @@ -0,0 +1,12 @@ +package com.epmet.dto.result.openapi; + +import lombok.Data; + +@Data +public class GetAccessTokenResultDTO { + + private String accessToken; + + private Long expireTime; + +} diff --git a/epmet-module/epmet-ext/epmet-ext-server/src/main/java/com/epmet/controller/OpenApiAccessTokenController.java b/epmet-module/epmet-ext/epmet-ext-server/src/main/java/com/epmet/controller/OpenApiAccessTokenController.java index 587dd99318..27c44ae532 100644 --- a/epmet-module/epmet-ext/epmet-ext-server/src/main/java/com/epmet/controller/OpenApiAccessTokenController.java +++ b/epmet-module/epmet-ext/epmet-ext-server/src/main/java/com/epmet/controller/OpenApiAccessTokenController.java @@ -7,6 +7,7 @@ import com.epmet.commons.tools.redis.RedisUtils; import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.validator.ValidatorUtils; import com.epmet.dto.form.openapi.OpenApiBaseFormDTO; +import com.epmet.dto.result.openapi.GetAccessTokenResultDTO; import com.epmet.feign.EpmetCommonServiceOpenFeignClient; import com.epmet.service.OpenApiAccessTokenService; import org.apache.commons.lang3.StringUtils; @@ -38,7 +39,7 @@ public class OpenApiAccessTokenController { */ @OpenApiCheckSign @PostMapping("get-access-token") - public Result getAccessToken(@RequestParam("app_id") String appId) { + public Result getAccessToken(@RequestParam("app_id") String appId) { // 1.取secret String secret = (String)redisUtils.get(RedisKeys.getExternalAppSecretKey(appId)); if (StringUtils.isBlank(secret)) { @@ -54,8 +55,8 @@ public class OpenApiAccessTokenController { } //2.生成token - String accessToken = openApiAccessTokenService.getAccessToken(appId, secret); - return new Result().ok(accessToken); + GetAccessTokenResultDTO content = openApiAccessTokenService.getAccessToken(appId, secret); + return new Result().ok(content); } } diff --git a/epmet-module/epmet-ext/epmet-ext-server/src/main/java/com/epmet/service/OpenApiAccessTokenService.java b/epmet-module/epmet-ext/epmet-ext-server/src/main/java/com/epmet/service/OpenApiAccessTokenService.java index 56c3bd4630..2b6d362636 100644 --- a/epmet-module/epmet-ext/epmet-ext-server/src/main/java/com/epmet/service/OpenApiAccessTokenService.java +++ b/epmet-module/epmet-ext/epmet-ext-server/src/main/java/com/epmet/service/OpenApiAccessTokenService.java @@ -1,5 +1,7 @@ package com.epmet.service; +import com.epmet.dto.result.openapi.GetAccessTokenResultDTO; + /** * access token的service */ @@ -11,5 +13,5 @@ public interface OpenApiAccessTokenService { * @author wxz * @date 2021.03.22 22:57 */ - String getAccessToken(String appId, String secret); + GetAccessTokenResultDTO getAccessToken(String appId, String secret); } diff --git a/epmet-module/epmet-ext/epmet-ext-server/src/main/java/com/epmet/service/impl/OpenApiAccessTokenServiceImpl.java b/epmet-module/epmet-ext/epmet-ext-server/src/main/java/com/epmet/service/impl/OpenApiAccessTokenServiceImpl.java index b00e5ca6d9..fad64083db 100644 --- a/epmet-module/epmet-ext/epmet-ext-server/src/main/java/com/epmet/service/impl/OpenApiAccessTokenServiceImpl.java +++ b/epmet-module/epmet-ext/epmet-ext-server/src/main/java/com/epmet/service/impl/OpenApiAccessTokenServiceImpl.java @@ -4,11 +4,14 @@ import com.epmet.commons.security.jwt.JwtUtils; import com.epmet.commons.tools.redis.RedisKeys; import com.epmet.commons.tools.redis.RedisUtils; import com.epmet.config.OpenApiConfig; +import com.epmet.dto.result.openapi.GetAccessTokenResultDTO; import com.epmet.openapi.constant.RequestParamKeys; import com.epmet.service.OpenApiAccessTokenService; +import org.joda.time.DateTime; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.Date; import java.util.HashMap; @Service @@ -24,15 +27,19 @@ public class OpenApiAccessTokenServiceImpl implements OpenApiAccessTokenService private RedisUtils redisUtils; @Override - public String getAccessToken(String appId, String secret) { + public GetAccessTokenResultDTO getAccessToken(String appId, String secret) { HashMap claim = new HashMap<>(); claim.put(RequestParamKeys.APP_ID, appId); - String token = jwtTokenUtils.createToken(claim, openApiConfig.getAccessTokenExpire(), secret); - + Date expireTime = DateTime.now().plusSeconds(openApiConfig.getAccessTokenExpire()).toDate(); + String token = jwtTokenUtils.createToken(claim, expireTime, secret); // 缓存token redisUtils.set(RedisKeys.getOpenApiAccessTokenKey(appId), token, openApiConfig.getAccessTokenExpire()); - return token; + GetAccessTokenResultDTO content = new GetAccessTokenResultDTO(); + content.setAccessToken(token); + content.setExpireTime(expireTime.getTime()); + + return content; } }