当前位置: 首页 > 知识库问答 >
问题:

如何使用Spring Boot和Spring Security保护REST API?

云文栋
2023-03-14
    null

当前状态

  @Override
    public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {

        HttpServletRequest request = (HttpServletRequest) req;

        String accessToken = request.getHeader(AUTHORIZATION_TOKEN);
        Account account = accountDao.find(accessToken);

        if (account == null) {    
            throw new UnauthorizedException();    
        }

        chain.doFilter(req, res);

    }

请给我一些如何开始的点子。

共有1个答案

汲昊空
2023-03-14

基于令牌的身份验证--用户将提供其凭据并获得唯一的、有时间限制的访问令牌。我想在我自己的实现中管理令牌的创建,检查有效性,过期。

实际上,对令牌身份验证使用筛选器--这种情况下最好的方法

最终,您可以通过Spring数据创建CRUD来管理令牌的属性,如expire等。

这不是问题,您可以通过Spring security config管理资源,如下所示:.antmatchers(“/rest/blabla/**”).PermitAll()

某些资源仅供具有管理员权限的用户访问,

@Controller
@RequestMapping(value = "/adminservice")
@Secured("ROLE_ADMIN")
public class AdminServiceController {
    http
            .authorizeRequests()
            .antMatchers("/openforall/**").permitAll()
            .antMatchers("/alsoopen/**").permitAll()
            .anyRequest().authenticated()

是的,通过令牌过滤器,您的用户将被认证。

回到上面的单词,查看@enablewebsecurity。您的班级将是:

@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {}
    @Override
protected void configure(HttpSecurity http) throws Exception {
    http
            .authorizeRequests()
            .antMatchers("/assets/**").permitAll()
            .anyRequest().authenticated()
            .and()
            .formLogin()
                .usernameParameter("j_username")
                .passwordParameter("j_password")
                .loginPage("/login")
                .defaultSuccessUrl("/", true)
                .successHandler(customAuthenticationSuccessHandler)
                .permitAll()
            .and()
                .logout()
                .logoutUrl("/logout")
                .invalidateHttpSession(true)
                .logoutSuccessUrl("/")
                .deleteCookies("JSESSIONID")
                .logoutRequestMatcher(new AntPathRequestMatcher("/logout"))
            .and()
                .csrf();
}
 类似资料:
  • 本文向大家介绍如何使用SpringSecurity保护程序安全,包括了如何使用SpringSecurity保护程序安全的使用技巧和注意事项,需要的朋友参考一下 首先,引入依赖: 引入此依赖之后,你的web程序将拥有以下功能: 所有请求路径都需要认证 不需要特定的角色和权限 没有登录页面,使用HTTP基本身份认证 只有一个用户,名称为user 配置SpringSecurity springsecur

  • 我正在运行spring boot,KafkaListener是我的客户。问题是我们如何从失败的kafka配置中恢复,并避免应用程序在退出代码为0的过程结束时停止。例如,不正确的配置可能是不正确的endpointurl。如果无法访问Kafka服务器,也会出现同样的情况。因此,在任何情况下,KafkaListner进程都不应该杀死服务器。 ontext.java:895应用程序上下文异常:未能启动be

  • 问题内容: 我知道保护REST API是一个被广泛评论的话题,但是我无法创建一个符合我的标准的小型原型(并且我需要确认这些标准是现实的)。如何保护资源以及如何使用Spring安全性有很多选择,我需要弄清楚我的需求是否现实。 我的要求 基于令牌的身份验证器-用户将提供其凭据,并获得唯一且受时间限制的访问令牌。我想在自己的实现中管理令牌的创建,检查有效性和到期时间。 某些REST资源将是公开的-完全不

  • 我正在开发配置了SSO/OAuth2安全性的Spring Boot应用程序。身份验证对我的rest控制器很有效,现在我需要用restendpoint保护我的Apache Camel路由。 据我所知,有几种方法可以做到这一点: 通过将身份验证处理器添加到我的路线 通过向我的路线添加策略(SpringSecurityAuthorizationPolicy) jettyendpoint的“按处理程序”选

  • 我正在尝试在zookeeper和kafka之间设置kerberos标识。 我遵循了此处提供的配置步骤:https://docs.confluent.io/4.1.1/kafka/authentication_sasl_gssapi.html#sasl-gssapi经纪人。 Kafka代理成功连接到zookeeper集合,代理正在zNode上设置ACL。 在Zookeeper中,我可以看到znode

  • 问题内容: 通常在服务器级别阻止DDoS(分布式拒绝服务攻击),对吗? 有没有办法在PHP级别上阻止它,或者至少减少它? 如果没有,阻止DDoS攻击的最快,最常见的方法是什么? 问题答案: DDOS是一系列攻击,它们淹没了数据中心的关键系统,其中包括: 托管中心与互联网的网络连接 托管中心的内部网络和路由器 您的防火墙和负载平衡器 您的Web服务器,应用程序服务器和数据库。 在开始构建DDOS防御