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