diff --git a/epmet-gateway/src/main/java/com/epmet/auth/ExtAppAuthProcessor.java b/epmet-gateway/src/main/java/com/epmet/auth/ExtAppAuthProcessor.java index 4dc7a22c71..507f2dc54d 100644 --- a/epmet-gateway/src/main/java/com/epmet/auth/ExtAppAuthProcessor.java +++ b/epmet-gateway/src/main/java/com/epmet/auth/ExtAppAuthProcessor.java @@ -2,6 +2,7 @@ package com.epmet.auth; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.web.server.ServerWebExchange; /** @@ -13,7 +14,7 @@ public abstract class ExtAppAuthProcessor { private int diffMillins = 1000 * 60 * 5; - public abstract void auth(String appId, String token, Long ts); + public abstract void auth(String appId, String token, Long ts, ServerWebExchange exchange); /** * 时间戳校验 diff --git a/epmet-gateway/src/main/java/com/epmet/auth/ExtAppJwtAuthProcessor.java b/epmet-gateway/src/main/java/com/epmet/auth/ExtAppJwtAuthProcessor.java index 431907cde5..923e85c441 100644 --- a/epmet-gateway/src/main/java/com/epmet/auth/ExtAppJwtAuthProcessor.java +++ b/epmet-gateway/src/main/java/com/epmet/auth/ExtAppJwtAuthProcessor.java @@ -15,6 +15,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; +import org.springframework.web.server.ServerWebExchange; /** * jwt 认证处理器 @@ -31,7 +32,7 @@ public class ExtAppJwtAuthProcessor extends ExtAppAuthProcessor { private RedisUtils redisUtils; @Override - public void auth(String appId, String token, Long ts) { + public void auth(String appId, String token, Long ts, ServerWebExchange exchange) { String secret; if (StringUtils.isBlank(secret = getTokenFromCache(appId))) { throw new RenException(EpmetErrorCode.OPER_EXTERNAL_APP_AUTH_ERROR.getCode(), String.format("根据AppId:【%s】没有找到对应的秘钥", appId)); @@ -65,6 +66,9 @@ public class ExtAppJwtAuthProcessor extends ExtAppAuthProcessor { logger.error("AppId不对应,token外部的:{}, token内部解析出来的:{}", appId, appIdIn); throw new RenException(EpmetErrorCode.OPER_EXTERNAL_APP_AUTH_ERROR.getCode(), "AppId不匹配"); } + + // 添加客户ID等到请求头 + exchange.getRequest().mutate().header("CustomerId", customerId); } /** diff --git a/epmet-gateway/src/main/java/com/epmet/auth/ExtAppMD5AuthProcessor.java b/epmet-gateway/src/main/java/com/epmet/auth/ExtAppMD5AuthProcessor.java index c1869cb1ab..c9fa8e5c2a 100644 --- a/epmet-gateway/src/main/java/com/epmet/auth/ExtAppMD5AuthProcessor.java +++ b/epmet-gateway/src/main/java/com/epmet/auth/ExtAppMD5AuthProcessor.java @@ -13,6 +13,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; +import org.springframework.web.server.ServerWebExchange; /** * md5 认证处理器 @@ -29,7 +30,7 @@ public class ExtAppMD5AuthProcessor extends ExtAppAuthProcessor { private RedisUtils redisUtils; @Override - public void auth(String appId, String token, Long ts) { + public void auth(String appId, String token, Long ts, ServerWebExchange exchange) { if (ts == null) { throw new RenException(EpmetErrorCode.OPER_EXTERNAL_APP_AUTH_ERROR.getCode(), "需要传入时间戳参数"); } diff --git a/epmet-gateway/src/main/java/com/epmet/auth/ExternalAuthProcessor.java b/epmet-gateway/src/main/java/com/epmet/auth/ExternalAuthProcessor.java index 7b46e870ce..c2614b488a 100644 --- a/epmet-gateway/src/main/java/com/epmet/auth/ExternalAuthProcessor.java +++ b/epmet-gateway/src/main/java/com/epmet/auth/ExternalAuthProcessor.java @@ -61,9 +61,9 @@ public class ExternalAuthProcessor extends AuthProcessor { // 没传authType或者传的jwt都用jwtprocessor处理 try { if (StringUtils.isBlank(authType) || APP_AUTH_TYPE_JWT.equals(authType)) { - jwtAuthProcessor.auth(appId, token, StringUtils.isNotBlank(ts) ? new Long(ts) : null); + jwtAuthProcessor.auth(appId, token, StringUtils.isNotBlank(ts) ? new Long(ts) : null, exchange); } else if (APP_AUTH_TYPE_MD5.equals(authType)) { - md5AuthProcessor.auth(appId, token, StringUtils.isNotBlank(ts) ? new Long(ts) : null); + md5AuthProcessor.auth(appId, token, StringUtils.isNotBlank(ts) ? new Long(ts) : null, exchange); } else { throw new RenException(EpmetErrorCode.OPER_EXTERNAL_APP_AUTH_ERROR.getCode(), "未知的认证类型"); }