From 0322747773916d6fedc289576a1d30b3f1aee41a Mon Sep 17 00:00:00 2001 From: wxz Date: Fri, 25 Sep 2020 14:31:46 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B0=86=E5=A4=96=E9=83=A8=E5=BA=94=E7=94=A8?= =?UTF-8?q?=E8=AE=A4=E8=AF=81-jwt=E6=96=B9=E5=BC=8F-=E7=9A=84customerId?= =?UTF-8?q?=E6=94=BE=E5=88=B0=E5=A4=B4=E9=87=8C=E9=9D=A2=EF=BC=8C=E4=BB=A5?= =?UTF-8?q?=E4=BE=BF=E4=B8=9A=E5=8A=A1=E6=9C=8D=E5=8A=A1=E5=8F=96=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/epmet/auth/ExtAppAuthProcessor.java | 3 ++- .../main/java/com/epmet/auth/ExtAppJwtAuthProcessor.java | 6 +++++- .../main/java/com/epmet/auth/ExtAppMD5AuthProcessor.java | 3 ++- .../src/main/java/com/epmet/auth/ExternalAuthProcessor.java | 4 ++-- 4 files changed, 11 insertions(+), 5 deletions(-) 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(), "未知的认证类型"); }