在SpringCloudGateway中定制请求

在SpringCloudGateway中定制请求,spring,spring-boot,spring-cloud,spring-cloud-gateway,Spring,Spring Boot,Spring Cloud,Spring Cloud Gateway,据我所知,SpringCloudGateway必须实现一个HTTP客户端来进行反向代理请求。Spring框架正好提供了这一点。我不知道SpringCloudGateway是否在内部使用它 如果是,是否可以访问WebClient实例?这将允许配置客户端的属性。其中一种可能性是提供OAuth2授权客户端,以使用授权头配置请求,如: 这样做的需要是与密码授权授予类型集成,Spring没有提供一种方法来顺利完成这项工作。您可以找到有关此场景的更多信息。事实上,不需要手动拦截您的呼叫。有很多教程告诉我们如

据我所知,SpringCloudGateway必须实现一个HTTP客户端来进行反向代理请求。Spring框架正好提供了这一点。我不知道SpringCloudGateway是否在内部使用它

如果是,是否可以访问WebClient实例?这将允许配置客户端的属性。其中一种可能性是提供OAuth2授权客户端,以使用授权头配置请求,如:


这样做的需要是与密码授权授予类型集成,Spring没有提供一种方法来顺利完成这项工作。您可以找到有关此场景的更多信息。

事实上,不需要手动拦截您的呼叫。有很多教程告诉我们如何在SpringCloudGateway上启用OAuth2授权。 你可以跟着。你可以在网上找到有用的东西。或者这是我以前使用的代码:

/**
 * OAuth2.0 authorization filter setup.
 *
 * @param http
 * @return security filter
 */
@Bean
@ConditionalOnMissingBean
public SecurityWebFilterChain springSecurityFilterChainWithAuth(ServerHttpSecurity http) {
    http
            .authorizeExchange()
            .anyExchange().authenticated()
            .and()
            .oauth2ResourceServer()
            .jwt();
    return http.build();
}
属性文件中的其他配置:

spring:
  security:
    oauth2:
      resourceserver:
        jwt:
          issuer-uri: [your_uri_here]

它当前未使用
WebClient
。也就是说,您可以通过过滤器中的
ServerWebExchange
访问请求,以添加/修改/删除请求标题。谢谢您的回答。事实上,我试过你的场景好几次,它很容易设置。我忘了提到我正在尝试使用密码授权授予类型(我的错误,我将更新问题)。有了这些,我找不到任何可能的方法来设置它。如果你能提供一些关于我做错了什么的想法,我将非常高兴。在这里你可以找到更多关于:@rigon的细节,现在我得到了你的问题。我从来没有被要求有一个密码授权授予类型,所以很遗憾,我不能帮助你。我看到您进行了深入的调查,如果现在没有现成的配置,那么您的解决方案就是一个很好的解决方案。实际上它看起来并不那么凌乱。我认为您现在可以接受它,并在将来发布更好的方法时替换它。
spring:
  security:
    oauth2:
      resourceserver:
        jwt:
          issuer-uri: [your_uri_here]