当前位置: 首页 > 面试题库 >

如何仅在受保护的端点上应用spring安全过滤器?

满博
2023-03-14
问题内容

我具有以下Spring Security配置:

    httpSecurity
            .csrf()
            .disable()
            .exceptionHandling()
            .authenticationEntryPoint(unauthorizedHandler)
            .and()
            .sessionManagement()
            .sessionCreationPolicy(SessionCreationPolicy.STATELESS)
            .and()
            .authorizeRequests()
            .antMatchers("/api/**").fullyAuthenticated()
            .and()
            .addFilterBefore(authenticationTokenFilterBean(), UsernamePasswordAuthenticationFilter.class);

authenticationTokenFilterBean()甚至在不匹配的终端应用/api/**表现。我也尝试添加以下配置代码

@Override
public void configure(WebSecurity webSecurity) {
    webSecurity.ignoring().antMatchers("/some_endpoint");
}

但这仍然不能解决我的问题。如何告诉Spring Security仅在与安全URI表达式匹配的端点上应用过滤器?谢谢


问题答案:

我有一个具有相同要求的应用程序,要解决此问题,我基本上将Spring Security限制为给定的ant
match模式(使用antMatcher),如下所示:

http.antMatcher("/api/**").authorizeRequests() //
        .anyRequest().authenticated() //
        .and()
        .addFilterBefore(authenticationTokenFilterBean(), UsernamePasswordAuthenticationFilter.class);

您可以阅读以下内容:http仅在与/api/**授权any requestauthenticated用户的ant模式匹配的请求上调用这些配置and add filter
authenticationTokenFilterBean() before
UsernamePasswordAuthenticationFilter。对于所有其他请求,此配置无效。



 类似资料:
  • 我有一些问题。我为我的应用程序使用了Spring Security,当我标记方法注释@安全(“ROLE_ADMIN”)时,它不起作用。 这security-config.xml 身份验证有效。数据库中的角色是正确的。此代码也有效。

  • 问题内容: 我已经以如下方式实现了csrf(跨站点请求伪造)保护: 这很好。Angularjs在通过$ http服务发出的所有请求中都使用了csrf令牌。我通过我的角度应用程序发出的请求效果很好。 我的问题是测试这些api端点。我正在使用mocha来运行自动化测试,并使用request模块来测试api端点。当我通过请求模块向使用csrf(POST,PUT,DELETE等)的端点发出请求时,即使它正

  • 问题内容: 我们在GlassFish 2服务器上部署了一些过时的EJB(EJB3),它们通过@Webmethod批注将其某些方法公开为Web服务。 现在,我们要保护这些Web服务方法的安全性,以便只有经过身份验证的客户端才能调用它。什么是实现这一目标的好方法? 问题答案: 就像好牧师说的那样。以下示例使用文件领域进行身份验证。 您还将需要 sun-ejb-jar.xml 例如 在glassfish

  • 如果当前请求是安全的,有没有办法“询问”Spring Security性?因为即使我通过了身份验证,我也要检测我是在受安全保护的URL中还是在匿名/公共页面中 提前感谢!

  • 使用 HTTPS 保护站点安全 构建 PWA 应用时,HTTPS 是必不可少的条件之一。使用 HTTP 协议的应用存在着一定的安全隐患,这是因为 HTTP 本身不具备加密的功能,通信中使用明文传输请求和响应的内容,内容可能会被窃听,而且 HTTP 缺少对通信双方身份进行校验的环节,也无法证明报文内容的完整性,存在身份伪装和信息被篡改的风险。所以,我们应该严格地使用 HTTPS 协议来保护 PWA

  • 问题内容: 我的应用程序使用Express和AngularJS。我正在使用express通过静态处理角度代码的基本网络设置。角度代码使用的服务会影响express托管的API端点。我只希望用户经过身份验证后才能访问API端点。如何通过PassportJS完成此操作? 问题答案: 我已经在github上上传了一个Angular-Express 项目。 仍在进行中。希望对您有所帮助。 它使用Passp