跳至主要內容

安全

zzz小于 1 分钟后端SpringSpring Cloud

安全

基于spring-security-web-5.1.10

SpringBoot Oauth2文档open in new window

官方整合gateway和oauth2的demoopen in new window

oauth2文档open in new window

oauth2开发指南open in new window

SpringCloudSecurity中文文档open in new window

SpringCloudSecurity官方文档open in new window

Token Relay

gateway作为Oauth2的Token Relay,使用TokenRelayGatewayFilterFactory实现

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

application.yaml

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

执行过程

org.springframework.security.web.FilterChainProxy包含以下过滤器

FilterChainProxy
FilterChainProxy
  • WebAsyncManagerIntegrationFilter

通过使用SecurityContextCallableProcessingInterceptor.beforeConcurrentHandling(org.springframework.web.context.request.NativeWebRequest,Callable)将SecurityContext填充在Callable上,从而在SecurityContext和Spring Web的WebAsyncManager之间提供集成

TokenEndpoint

AuthorizationEndpoint