gpt4 book ai didi

spring - Spring Boot 中 Zuul 代理 oAuth2 未授权

转载 作者:行者123 更新时间:2023-12-02 02:39:13 26 4
gpt4 key购买 nike

我有一个使用 oAuth2 保护的微服务,称为“国家/地区服务”。当我直接向此服务发送请求(包括我的 JWT 不记名 token )时,一切正常:

enter image description here

server:
port: 8081

spring:
database:
driverClassName: org.postgresql.Driver
datasource:
url: jdbc:postgresql://localhost:5432/vue-boot-country
username: postgres
password: postgres
jpa:
hibernate:
ddl-auto: validate
database-platform: org.hibernate.dialect.PostgreSQLDialect

eureka:
client:
serviceUrl:
defaultZone: http://localhost:8761/eureka/

我还有一个 api-gateway(Zuul 代理):

@SpringBootApplication
@EnableEurekaClient
@EnableZuulProxy
public class VueBootApiGatewayApplication {

public static void main(String[] args) {
SpringApplication.run(VueBootApiGatewayApplication.class, args);
}
}

除了这两个文件之外没有其他文件

server:
port: 8765

eureka:
client:
serviceUrl:
defaultZone: http://localhost:8761/eureka/

zuul:
routes:
vue-boot-country-service: /api/country/**
add-proxy-headers: true

我无法向代理发送成功的请求,我不断收到“未经授权”错误:

enter image description here

注意:当我从资源服务器中删除 oAuth2 安全性时,Zuul 代理似乎可以工作。

有人知道我在这里做错了什么吗?

最佳答案

这与 zuuls 所谓的“敏感” header 有关,例如“授权”。这些都会针对传递到内部的所有请求进行过滤...

我不知道设置 header 是否已经可以使用此配置:

zuul:
ignoredHeaders:
- authorization

如果没有,您可以定义一个 Zuul 过滤器 bean 来手动管理:

@Component
public class RelayTokenFilter extends ZuulFilter{
@Override
public String filterType() {
return "pre";
}

@Override
public int filterOrder() {
return 10000;
}

@Override
public boolean shouldFilter() {
return true;
}

@Override
public Object run() {
RequestContext context = RequestContext.getCurrentContext();

@SuppressWarnings("unchecked") Set<String> ignoredHeaders = (Set<String>) context.get("ignoredHeaders");
ignoredHeaders.remove("authorization");

return null;
}
}

关于spring - Spring Boot 中 Zuul 代理 oAuth2 未授权,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38030242/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com