You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Gateway对接Spring Authorization Server授权实现方案咨询

可以实现,完全不需要对外暴露Spring Authorization Server,核心方案是将Spring Gateway作为OAuth2资源服务器,仅在网关内网侧和授权服务器交互完成令牌校验,外网仅暴露网关入口即可。


1 补充依赖

首先在Gradle配置中新增OAuth2资源服务器依赖,让网关具备令牌校验能力:

implementation 'org.springframework.boot:spring-boot-starter-oauth2-resource-server'

2 修正路由配置

你当前的路由配置存在两处问题:一是路径匹配规则和需要拦截的前端请求不匹配,二是负载均衡URI配置不符合规范。修正后配置如下:

@Bean
public RouteLocator routes(RouteLocatorBuilder builder, LoggingGatewayFilterFactory loggingFactory) {
    return builder.routes()
            .route("service_route_clients_summary", r -> r.path("/api/management/home/clients/summary")
                    .filters(f -> f.rewritePath("/api(?<segment>.*)", "${segment}")
                            .filter(loggingFactory.apply(new LoggingGatewayFilterFactory.Config("My Custom Message", true, true))))
                    // lb协议后仅填写Eureka中注册的服务名,路径会经过重写后自动拼接
                    .uri("lb://merchant-hub-admin-service"))
            .build();
}

3 配置OAuth2校验规则

在网关的application.yml中添加授权服务器的内网访问地址,该地址不需要对外网开放,仅需要网关所在网络可以连通即可:

spring:
  security:
    oauth2:
      resourceserver:
        jwt:
          # 替换为你的Spring Authorization Server内网JWT公钥地址
          issuer-uri: http://{SAS内网IP}:{SAS端口}/oauth2/jwks

提示:如果下游服务不需要二次校验令牌,可添加配置移除传递给下游的Authorization请求头,避免敏感信息泄露。

4 新增网关安全配置

添加安全配置类,要求所有请求必须携带有效JWT令牌才能放行:

@Configuration
@EnableWebFluxSecurity
public class GatewaySecurityConfig {
    @Bean
    public SecurityWebFilterChain securityWebFilterChain(ServerHttpSecurity http) {
        http
            .authorizeExchange(exchange -> exchange
                .anyExchange().authenticated()
            )
            .oauth2ResourceServer(ServerHttpSecurity.OAuth2ResourceServerSpec::jwt)
            .csrf(ServerHttpSecurity.CsrfSpec::disable);
        return http.build();
    }
}

实现流程说明

  1. 客户端通过登录接口获取Spring Authorization Server签发的JWT令牌,登录接口可通过网关路由到内部的认证服务,无需对外暴露授权服务器
  2. 客户端携带JWT请求/api/management/home/clients/summary接口,请求统一发往网关
  3. 网关内网调用授权服务器的公钥接口校验令牌有效性,校验失败直接返回401,校验通过执行路径重写规则
  4. 网关将重写后的内部路径/management/home/clients/summary转发到下游服务,完成请求处理

内容的提问来源于stack exchange,提问作者Peter Penzov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 04:39:04