当前位置: 首页 > 知识库问答 >
问题:

仅使用承载器保护Spring云网关

姚钊
2023-03-14

我目前想用Spring Cloud Gateway来保护我的微服务架构。有网页前端工程师向KeyCloak服务器验证自己,然后将令牌与每个请求一起发送。现在的情况是,只有网关应该对外公开,而单个服务将无法从外部访问。

如何在密钥斗篷服务器上验证承载令牌?

我已经在互联网上搜索了一段时间,但还没有找到任何验证令牌的内容。在任何地方,身份验证都是通过网关完成的,然后令牌由各个服务进行验证。然而,当我将网关声明为OAuth2资源服务器时,整个过程都不起作用。

共有1个答案

韦知
2023-03-14

我设法让它发挥作用。

我的安全配置如下:

@Configuration
@EnableWebFluxSecurity
public class SecurityConfig {
    @Bean
    public SecurityWebFilterChain springSecurityFilterChain(ServerHttpSecurity http) {
        http.authorizeExchange(exchanges -> exchanges.anyExchange().authenticated())
                .oauth2ResourceServer().jwt();
        http.csrf().disable();
        return http.build();
    }

}

此外,我还添加了一个CorsFilter:

@Configuration
public class PreFlightCorsConfiguration {

    @Bean
    public CorsWebFilter corsFilter() {
        return new CorsWebFilter(corsConfigurationSource());
    }

    @Bean
    CorsConfigurationSource corsConfigurationSource() {
        final UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        CorsConfiguration config = new CorsConfiguration().applyPermitDefaultValues();
        config.addAllowedMethod( HttpMethod.GET);
        config.addAllowedMethod( HttpMethod.PUT);
        config.addAllowedMethod( HttpMethod.POST);
        config.addAllowedMethod( HttpMethod.OPTIONS);
        config.addAllowedMethod(HttpMethod.DELETE);
        source.registerCorsConfiguration("/**", config);
        return source;
    }
}

我使用的安全依赖项是:

  <dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-oauth2-client</artifactId>
  </dependency>
  <dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-oauth2-resource-server</artifactId>
  </dependency>
  <dependency>
     <groupId>org.springframework.cloud</groupId>
     <artifactId>spring-cloud-starter-security</artifactId>
     <version>2.2.5.RELEASE</version>
  </dependency>
 类似资料:
  • 我已经创建了许多生成/使用JSON数据的Web服务,并使用OAuth2和承载令牌对它们进行了保护,效果很好。 然而,现在我需要构建一个类似的Web服务来生成图像而不是JSON(即JPEG/PNG数据)。为了保持一致性,我也想用OAuth2/承载令牌来保护服务,但是这样做会使服务在基于浏览器的应用程序中更具挑战性,这些应用程序希望使用 我认为有两种方法可以解决这个问题: > 修改OAuth2基础设施

  • 我想使用keycloak作为身份验证和授权服务器来保护spring cloud数据流服务器并管理对其endpoint的访问。 我按照Spring的文档http://docs.spring.io/spring-cloud-dataflow/docs/1.7.0.rc1/reference/htmlsingle/#configuration-security-oauth2中的描述设置了scdf服务器的

  • 有角度的v.v4。0.2 Spring靴1.5版。2.发布 钥匙斗篷v.2。4.0.最终版本(稍后将升级) 我读了关于同样问题的邮件对话:http://keycloak-user.88327.x6.nabble.com/keycloak-user-NOT-ATTEMPTED-bearer-only-error-while-trying-to-access-server-from-client-td

  • 我正在使用Spring云安全和Oauth2来保护我的微服务。现在Pom如下: http://maven.apache.org/xsd/maven-4.0.0.xsd" Spring靴主要等级如下: 授权服务器配置如下: 注意:身份验证管理器自动连接到授权配置中 在下面的类中,身份验证管理器被配置并返回为abean,以便可以自动连接到上面的类: 现在application.properties如下:

  • 提前,我为这个looong问题道歉!事实上,问题并没有那么长,但是我发布了很多我的代码片段,因为我真的不知道什么与解决我的问题相关或不相关...... 我一直在尝试使用以下内容制作一个简单的poc:-Angular 8前端-用于身份验证的Keycloak服务器-Spring云后端架构:-使用Spring Cloud Security保护的Spring Cloud Gateway-Spring Cl

  • 有没有办法只使用spring security实现CSRF保护,而不使用身份验证和授权等其他功能? 我尝试了以下配置,但它关闭了spring security的所有功能。想知道是否有一种方法可以配置csrf功能。