首页 > 解决方案 > 允许通过 Spring Web Security 对安全资源进行有限访问

问题描述

需要一些建议

我使用弹簧网络安全,例如

 @Override
public void configure(HttpSecurity http) throws Exception {
    http
        .headers().frameOptions().disable()
    .and()
        .authorizeRequests()
        .antMatchers("/app/profile-info").permitAll()
        .antMatchers("/app/**").authenticated()
        .antMatchers("/management/health").permitAll();

}

要访问 API“应用程序”,您必须经过身份验证。但是我想允许任何人在一段时间内使用应用程序 api,例如他们可以每天使用 3 次 api,之后他们需要注册服务

我研究了几种解决方案,例如使用 ip 并存储他们使用 API 的次数

我想知道spring security中是否有实现上述目的的机制?我一直找不到任何东西

标签: spring-security

解决方案


您描述的问题不是身份验证问题,而是授权问题。

我看到的方式是用户应该被识别和验证(例如通过IP / SMS /等注册或识别,如果服务可以在没有注册的情况下使用)。然后,您将给定配额与用户(数据库中的一个简单字段)相关联,并在执行 API 中的任何方法之前对其进行检查。据我所知,它可以通过基于属性的访问控制通过 Spring Security 实现,您的自定义属性将检查用户是否超出配额。

另外,请注意一个称为竞争条件的问题:用户可以尝试更快地访问资源(通过创建大量同时请求),而不是在数据库中更新配额计数器。在我一直在使用的几个 spring 应用程序中看到它。


推荐阅读