无需用户登录即可安全 spring 启动应用程序

Secure spring boot app without user log on

我正在创建一个 spring 启动 API 并在我正在处理的项目中反应前端。前端没有用户登录,但是,我想确保我的 API 端点是安全的,并且只能由我的 React 前端访问,我正在努力想出解决方案。

我考虑的一个可能的解决方案是使用 JWT 保护 API。创建一个用户table,为前端客户端创建一个用户。当用户访问前端时获取令牌并在所有请求上验证此令牌。我不确定这是否是一种有效的方法,或者是否有其他更合适的解决方案。

该应用程序将托管在 Heroku 上,堆栈:spring 引导、反应和 MySQL 数据库。任何人以前遇到过这个或任何建议都非常感谢。

我建议在 CORS 配置的 allowedOrigins 添加域:

import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.core.Ordered;
import org.springframework.stereotype.Component;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
import org.springframework.web.filter.CorsFilter;

import java.util.Arrays;
import java.util.List;

@Component
public class CorsFilterConfig {

    public static final List<String> allowedOrigins = Arrays.asList("yourDomainsHere");

    @Bean
    public FilterRegistrationBean<CorsFilter> initCorsFilter() {
        // @formatter:off
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        CorsConfiguration config = new CorsConfiguration();
        config.setAllowCredentials(true);
        config.setAllowedHeaders(Arrays.asList("Authorization", "Cache-Control", "Content-Type"));
        config.addAllowedMethod("*");
        config.setAllowedOrigins(allowedOrigins);
        source.registerCorsConfiguration("/**", config);
        FilterRegistrationBean<CorsFilter> bean = new FilterRegistrationBean<>(new CorsFilter(source));
        bean.setOrder(Ordered.HIGHEST_PRECEDENCE);
        return bean;
        // @formatter:on
    }
} 

More

这是不可能的。

从本质上讲,这将要求前端能够访问一些秘密值来验证其请求,即令牌。然后,您将允许基于此秘密值的存在的请求,并提供响应。

但是,前端服务于 public 资产,因此不能有秘密。在一天结束时,任何用户都可以检查他们的网络请求,并从您的前端发出的请求中提取令牌。

有了这些信息,他们就可以伪造自己的请求。