Springboot REST-公开与安全和非安全相同的服务

时间:2019-07-08 12:26:52

标签: rest spring-boot

我想在springboot应用程序中为我的Spring https REST服务(当前不安全)启用基本身份验证。多个客户端正在使用这些服务,而有些可以迁移到受保护的服务,而有些仍希望使用不安全的版本数月。如何在相同的Spring Boot应用程序中同时提供安全和不安全的服务?

尽管我通过在不同的端口中托管相同的服务并仅保护一个端口来为Apache cxf REST服务做到这一点,但不知道如何在springboot中完成此操作。

1 个答案:

答案 0 :(得分:2)

使用以下两个端点创建RequestMapping。想要使用基本身份验证的客户将通过/secure/** (如果没有身份验证就无法访问)获得服务,而其他将在几个月后迁移到安全环境的客户将使用{ {1}} (任何人都可以访问)。您可以使用类级别的RequestMapping来避免在方法级别的每个端点中更改

/unsecure/**

现在按如下所示配置安全性。为此,您需要将客户端角色存储在数据库中

@GetMapping(value= {"/secure/users","/unsecure/users"})
    public ResponseEntity<List<User>> findAllUsers()
    {   
        ...
    }

Working Git Example

安全端点: @Override protected void configure(HttpSecurity http) throws Exception{ http .csrf().disable() .authorizeRequests() .antMatchers("/unsecure/**").permitAll() .antMatchers("/secure/**").hasRole("CLIENT_SECURE") .anyRequest().authenticated(); } 状态403 enter image description here

不安全的端点: GET http://localhost:8088/secure/users 状态200 enter image description here