SpringCloud 網(wǎng)關(guān)中的客戶端令牌中繼

2023-12-05 17:22 更新

如果您的應(yīng)用程序還具有 Spring Cloud Gateway嵌入式反向代理,則可以要求它向下游轉(zhuǎn)發(fā)OAuth2訪問令牌到它正在代理的服務(wù)。因此,可以像下面這樣簡(jiǎn)單地增強(qiáng)上面的SSO應(yīng)用程序:

App.java。 

@Autowired
private TokenRelayGatewayFilterFactory filterFactory;

@Bean
public RouteLocator customRouteLocator(RouteLocatorBuilder builder) {
    return builder.routes()
            .route("resource", r -> r.path("/resource")
                    .filters(f -> f.filter(filterFactory.apply()))
                    .uri("http://localhost:9000"))
            .build();
}

或這個(gè)

application.yaml。 

spring:
  cloud:
    gateway:
      routes:
      - id: resource
        uri: http://localhost:9000
        predicates:
        - Path=/resource
        filters:
        - TokenRelay=

它將(除了登錄用戶并獲取令牌之外)將身份驗(yàn)證令牌傳遞到服務(wù)下游(在這種情況下為/resource)。

要為Spring Cloud網(wǎng)關(guān)啟用此功能,請(qǐng)?zhí)砑右韵乱蕾図?xiàng)

  • org.springframework.boot:spring-boot-starter-oauth2-client
  • org.springframework.cloud:spring-cloud-starter-security

它是如何工作的?濾波器 提取用于下游請(qǐng)求從當(dāng)前認(rèn)證的用戶的訪問令牌,并把它在請(qǐng)求報(bào)頭。

有關(guān)完整的工作示例,請(qǐng)參見此項(xiàng)目。

 TokenRelayGatewayFilterFactory使用的ReactiveOAuth2AuthorizedClientService的默認(rèn)實(shí)現(xiàn)使用內(nèi)存中的數(shù)據(jù)存儲(chǔ)。如果需要更強(qiáng)大的解決方案,則需要提供自己的實(shí)現(xiàn)ReactiveOAuth2AuthorizedClientService。


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)