簡體   English   中英

Zuul代理oAuth2在Spring Boot中未經授權

[英]Zuul proxy oAuth2 Unauthorized in Spring Boot

我有一個使用oAuth2保護的微服務,稱為country-service。 當我直接向包含我的JWT持票人令牌的服務發送請求時,一切正常:

在此輸入圖像描述

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

我無法向代理發送成功請求,我不斷收到“未經授權”錯誤:

在此輸入圖像描述

注意:當我從資源服務器中刪除oAuth2安全性時,Zuul代理似乎可以工作。

有人知道我在做錯了嗎?

這與zuuls所謂的“敏感”標題有關,比如“授權”。 對於傳遞給內部的所有請求,這些都被過濾了......

我不知道,如果設置標頭已經在使用此配置:

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;
    }
}

我遇到了同樣的問題。 令牌不通過Zuul傳遞給微服務的地方。 所以我補充道

zuul: sensitiveHeaders: Cookie,Set-Cookie

希望它可能對某人有用

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM