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

在Spring Boot 1.4中测试安全性

常雪风
2023-03-14

我正在尝试使用SecurityConfig类中定义的自定义安全设置来测试@WebMVCTest:

@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests().antMatchers("/admin*").access("hasRole('ADMIN')").antMatchers("/**").permitAll().and().formLogin();
    }

    @Autowired
    public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
        auth.inMemoryAuthentication().withUser("user").password("password").roles("ADMIN");
    }
}
@RunWith(SpringRunner.class)
@WebMvcTest(value = ExampleController.class)
public class ExampleControllerMockMVCTest {

    @Autowired
    private MockMvc mockMvc;

    @Test
    public void indexTest() throws Exception {
        mockMvc.perform(get("/"))
        .andExpect(status().isOk())
        .andExpect(view().name("index"));
    }

    @Test
    public void adminTestWithoutAuthentication() throws Exception {
        mockMvc.perform(get("/admin"))
        .andExpect(status().is3xxRedirection()); //login form redirect
    }

    @Test
    @WithMockUser(username="example", password="password", roles={"ANONYMOUS"})
    public void adminTestWithBadAuthentication() throws Exception {
        mockMvc.perform(get("/admin"))
        .andExpect(status().isForbidden());
    }

    @Test
    @WithMockUser(username="user", password="password", roles={"ADMIN"})
    public void adminTestWithAuthentication() throws Exception {
        mockMvc.perform(get("/admin"))
        .andExpect(status().isOk())
        .andExpect(view().name("admin"))
        .andExpect(model().attributeExists("name"))
        .andExpect(model().attribute("name", is("user")));
    }
}
@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = WebEnvironment.MOCK)
@AutoConfigureMockMvc
public class ExampleControllerSpringBootTest {

    @Autowired
    private MockMvc mockMvc;

    // tests
}

@webmvctest是否可以使用securityconfig类中定义的设置?

共有1个答案

卞昀
2023-03-14

webmvctest只加载您的控制器,而不加载其他(这就是我们称之为切片的原因)。我们无法确定您想要哪一部分配置,而不想要哪一部分配置。如果安全配置不在主@springbootapplication上,则必须显式导入它。否则,Spring Boot将启用默认安全设置。

如果您正在使用类似OAuth的东西,那么这是一件好事,因为您真的不想开始使用它来进行模拟测试。如果将@import(SecurityConfig.class)添加到测试中,会发生什么情况?

 类似资料:
  • Cookie是Web服务器发送的一小段信息,用于存储在Web浏览器上,以便以后可以被浏览器读取。这样浏览器会记住一些特定的个人信息。如果黑客获取cookie信息,则可能导致安全问题。 Cookies的属性 以下是Cookie的一些重要属性 - 它们通常是小文本文件,给定ID标记存储在计算机的浏览器目录中。 Web开发人员使用它们来帮助用户有效地浏览其网站并执行某些功能。 当用户再次浏览同一网站时,

  • 主要内容:1.安全,2.性能测试Redis 1.安全 我们可以通过 redis 的配置文件设置密码参数,这样客户端连接到 redis 服务就需要密码验证,这样可以让你的 redis 服务更安全。 1.1requirepass 永久生效 默认情况下 requirepass 参数是空的,这就意味着你无需通过密码验证就可以连接到 redis 服务。 你可以通过以下命令来修改该参数: 设置密码后,客户端连接 redis 服务就需要密码验

  • 密码学是加密和解密数据的科学,它使用户能够存储敏感信息或在不安全的网络上传输敏感信息,以便只能由预期的接收者读取。 可以在没有任何特殊措施的情况下读取和理解的数据称为明文,而伪装明文以隐藏其实质的方法称为加密。加密的明文称为密文,将加密数据恢复为纯文本的过程称为解密。 分析和破坏安全通信的科学被称为密码分析。执行相同操作的人也称为攻击者。 密码学可以是强或弱的,并且强度是通过恢复实际明文所需的时间

  • 主要内容:渗透测试工作流程安全测试可视为对系统的受控攻击,以实际的攻击方式揭示安全漏洞或问题。安全测试的目标是评估IT系统的当前状态。它也被称为渗透测试或道德黑客攻击。 渗透测试分阶段进行,在本章中,我们将讨论完整的过程。应在每个阶段进行适当的记录,以便随时可以获得重现攻击所需的所有步骤。本文还可作为客户在渗透测试结束时收到的详细报告的基础。 渗透测试工作流程 渗透测试包括四个主要阶段 - 踩点阶段 扫描阶段 枚举阶段 渗

  • 主要内容:安全测试是什么?安全测试对于保护系统免受Web上的恶意活动非常重要。 安全测试是什么? 安全测试是一种测试技术,用于确定信息系统是否保护数据并按预期维护功能。安全测试不保证系统的完全安全性,但重要的是将安全测试作为测试过程的一部分。 安全测试采取以下六项措施来提供安全的环境 - 保密 - 它可以防止向非预期接收者披露信息。 完整性 - 它允许从发送者向预期接收者传输准确和正确的所需信息。 身份验证 - 验证并确认

  • 主要内容:面向读者,前提条件,教程目录执行安全测试是为了揭示系统中的安全漏洞,以保护数据和维护功能。本教程通过简单实用的示例解释了安全测试的核心概念和相关主题。 面向读者 本教程是为安全测试初学者准备的,旨在帮助他们理解安全测试的基础知识。 前提条件 在继续本教程之前,您应该对软件测试及其相关概念有基本的了解。 教程目录 1.安全测试简介 - 安全测试是一种测试技术,用于确定信息系统是否保护数据并按预期维护功能。安全测试不保证系统的完