允许通过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安全性限制访问安全资源的主要内容,如果未能解决你的问题,请参考以下文章