【问题标题】:spring security Test case to perform basic authenticationspring security 测试用例执行基本认证
【发布时间】:2017-07-11 17:55:42
【问题描述】:

我有一个 Junit 测试用例,我在其中使用

对应用程序进行身份验证
 public static MockHttpServletRequestBuilder prepare(
            final MockHttpServletRequestBuilder request,
            final Participant user)
    {
        return request.contentType(MediaType.APPLICATION_JSON)
                .with(user(user.getAccount().getUsername())
                        .authorities(user.getAccount().getRole().getAuthorities()));
    }

事情是根据提供的文档 https://spring.io/blog/2014/05/23/preview-spring-security-test-web-security ,它实际上并没有使用用户名和密码进行身份验证,它只是根据我们传递的权限配置 SecurityContext 。

就我而言,每当用户登录应用程序时,我都会记录一个事件。我想编写一个测试用例来检查用户登录应用程序时是否存储了事件。但是由于 spring security 甚至没有对用户进行身份验证,它实际上并没有调用

onSuccessfulAuthentication(final javax.servlet.http.HttpServletRequest request, final javax.servlet.http.HttpServletResponse response, final Authentication authResult)

BasicAuthenticationFilter 我正在记录该事件。

有什么方法可以根据我的要求模拟测试用例吗?

【问题讨论】:

    标签: junit spring-security


    【解决方案1】:

    我能够找到解决方案。这是代码

    @Autowired
    private WebApplicationContext context;  
    
    @Test
    public void testcase1(){
        MockMvcBuilders.webAppContextSetup(this.context)
                            .apply(SecurityMockMvcConfigurers.springSecurity())
                            .build();
        final MvcResult mvcResult = this.mvc
                        .perform(get("/").with(httpBasic("test1","password")))
                        .andDo(print())
                        .andExpect(status().isOk())
                        .andReturn();
    }
    

    并且我在我的 spring 安全配置文件中添加了一个 CustomBasicAuthenticationFilter(我在其中覆盖了 BasicAuthenticationFilter 的 onSuccessfulAuthentication 方法)。

    配置类和CustomBasicAuthenticationFilter请参考Spring Security Token based Authentication

    【讨论】:

      猜你喜欢
      • 2017-09-05
      • 2020-11-14
      • 1970-01-01
      • 2020-12-29
      • 1970-01-01
      • 2014-04-04
      • 2015-02-22
      • 2019-05-08
      • 1970-01-01
      相关资源
      最近更新 更多