允许通过Spring Web安全性限制访问安全资源

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了允许通过Spring Web安全性限制访问安全资源相关的知识,希望对你有一定的参考价值。

需要一些建议

我使用弹簧网安全,例如

 @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“应用”,您必须经过身份验证。但是,我想允许任何人使用app api一段时间,例如他们每天可以使用api 3次,之后他们需要注册服务

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

我想知道弹簧安全是否有机制来实现上述目标?我一直找不到任何东西

答案

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

我看到的方式是应该识别和验证用户(例如,如果可以在没有注册的情况下使用服务,则通过IP / SMS /等进行注册或识别)。然后,您将给定的配额与用户(DB中的简单字段)相关联,并在执行API中的任何方法之前检查它。据我所知,可以通过Attribute-Based Access Control实现spring security,你的自定义属性将检查用户是否超出配额。

另外,请注意一个名为Race condition的问题:用户可以尝试更快地访问资源(通过创建大量的同步请求),而不是在DB中更新配额计数器。在我一直在使用的几个弹簧应用程序中看到它。

以上是关于允许通过Spring Web安全性限制访问安全资源的主要内容,如果未能解决你的问题,请参考以下文章

web安全未授权访问&身份验证&访问控制

jsf spring安全访问被拒绝认证登录

使用SAS保护Azure Storage的安全性

Spring 安全性不允许使用简单的匹配器和 permitAll 进行访问

spring security之web应用安全

Spring(引导)具有允许资源的安全预身份验证仍然经过身份验证