Skip to content

Commit

Permalink
fix-UpstreamHandler-传递gw-user的时候支持特殊字符并增加sign校验header
Browse files Browse the repository at this point in the history
  • Loading branch information
aruis committed Dec 26, 2024
1 parent 7e45bca commit 62a072f
Show file tree
Hide file tree
Showing 4 changed files with 16 additions and 4 deletions.
2 changes: 2 additions & 0 deletions build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@ dependencies {
implementation("io.quarkus:quarkus-reactive-routes")
implementation("io.vertx:vertx-web-client")

implementation(libs.commons.codes)

implementation("com.fasterxml.jackson.dataformat:jackson-dataformat-yaml")

testImplementation("io.rest-assured:rest-assured")
Expand Down
4 changes: 3 additions & 1 deletion gradle/libs.versions.toml
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
[versions]
quarkus = "3.17.2"
quarkus = "3.17.5"
codec = "1.17.1"

[libraries]
quarkus-platform-bom = { module = "io.quarkus.platform:quarkus-bom", version.ref = "quarkus" }
commons-codes = { module = "commons-codec:commons-codec", version.ref = "codec" }

[plugins]
quarkus = { id = "io.quarkus", version.ref = "quarkus" }
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,13 @@
import io.vertx.ext.web.RoutingContext;
import net.ximatai.muyun.gateway.RoutingContextKeyConst;
import net.ximatai.muyun.gateway.routes.IBaseRouteHandler;
import org.apache.commons.codec.digest.DigestUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.Base64;
import java.util.Collections;
import java.util.List;
import java.util.concurrent.ThreadLocalRandom;
Expand Down Expand Up @@ -103,7 +106,12 @@ public void handle(RoutingContext routingContext) {

JsonObject user = routingContext.get(RoutingContextKeyConst.USER);
if (user != null) {
headers.set("gw-user", user.encode());
String userJson = user.encode();
String userBase64 = Base64.getEncoder().encodeToString(userJson.getBytes(StandardCharsets.UTF_8));
String sign = DigestUtils.md5Hex(userJson + "BSY");

headers.set("gw-user", userBase64);
headers.set("gw-user-sign", sign);
}

reqUpstream.send(req)
Expand Down
4 changes: 2 additions & 2 deletions src/main/resources/config/gateway-config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ gateway:
cert-path: null
key-path: null
login:
path: "/api/sso/login"
path: "/login"
page: "/web/login"
api: "http://127.0.0.1:8080/api/sso/login"
jwt:
Expand All @@ -22,7 +22,7 @@ gateway:
to: "/logout"
frontends:
- path: "/web"
dir: "/Users/aruis/develop/workspace-bsy/unicom_xinan_project/dist"
dir: "/Users/aruis/develop/workspace-bsy/project_keeper/dist"
not-found-reroute: "/"
secured: true
regex: false
Expand Down

0 comments on commit 62a072f

Please sign in to comment.