我想在springboot应用程序中为我的Spring https REST服务(当前不安全)启用基本身份验证。多个客户端正在使用这些服务,而有些可以迁移到受保护的服务,而有些仍希望使用不安全的版本数月。如何在相同的Spring Boot应用程序中同时提供安全和不安全的服务?
尽管我通过在不同的端口中托管相同的服务并仅保护一个端口来为Apache cxf REST服务做到这一点,但不知道如何在springboot中完成此操作。
答案 0 :(得分:2)
使用以下两个端点创建RequestMapping。想要使用基本身份验证的客户将通过/secure/**
(如果没有身份验证就无法访问)获得服务,而其他将在几个月后迁移到安全环境的客户将使用{ {1}} (任何人都可以访问)。您可以使用类级别的RequestMapping来避免在方法级别的每个端点中更改
/unsecure/**
现在按如下所示配置安全性。为此,您需要将客户端角色存储在数据库中
@GetMapping(value= {"/secure/users","/unsecure/users"})
public ResponseEntity<List<User>> findAllUsers()
{
...
}
安全端点: @Override
protected void configure(HttpSecurity http) throws Exception{
http
.csrf().disable()
.authorizeRequests()
.antMatchers("/unsecure/**").permitAll()
.antMatchers("/secure/**").hasRole("CLIENT_SECURE")
.anyRequest().authenticated();
}
状态403