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

执行基本身份验证的spring security测试用例

东方骏
2023-03-14

我有一个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(最终javax.servlet.http.HttpServletRequest请求、最终javax.servlet.http.HttpServletResponse响应、最终身份验证authResult)

用于记录事件的basicauthenticationfilter

有没有办法用我的需求来模拟测试用例?

共有1个答案

龚联
2023-03-14

我找到了解决办法。这是密码

@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 Security配置文件中添加了一个CustomBasicAuthenticationFilter(在这里我重写了BasicAuthenticationFilter的onSuccessfulAuthentication方法)。

对于configuration类和CustomBasicAuthenticationFilter,请参阅基于Spring Security令牌的身份验证

 类似资料:
  • 问题内容: 从HttpClient 4.3开始,我一直在使用HttpClientBuilder。我正在连接到具有基本身份验证的REST服务。我将凭据设置如下: 但是,这不起作用(我正在使用的REST服务返回401)。怎么了? 问题答案: 从此处的 抢先身份验证 文档中: http://hc.apache.org/httpcomponents-client- ga/tutorial/html/aut

  • 我一直试图用restTemplate传递基本身份验证,但它甚至没有将身份验证头传递给服务器。下面是我使用的bean定义` `

  • 问题内容: 我目前正在尝试使用HTTP和HTTPS访问URL。我尝试访问的URL需要基本身份验证。使用HTTP可以正常工作,但是使用HTTPS则不能。我不确定是否需要使用HTTPS添加其他内容。该URL应该返回给我的文本是键值格式,可以加载到对象中。 这是到目前为止我尝试过的代码。 这是证书类别 当我删除所有证书代码(以及证书代码)时的错误消息: 问题答案: 问题似乎是由于在更改连接的和实例之前打

  • 我有一个简单的spring boot(1.3.5)应用程序,它有一个简单的集成测试,在我引入Spring-boot-starter-security之前可以工作。我在application.properties中设置了security.user.name和security.user.password,这似乎是保护我的endpoint密码所需要的全部(如果可能的话,我不希望添加不必要的角色或安全配置

  • 问题内容: 使用基本身份验证进行身份验证时遇到问题。我正在使用符合协议的标准枚举来构造我的请求。问题是,当我在枚举中手动设置授权标头时,如下所示: 我总是收到401未经授权的回复。 但是, 如果我像这样使用回调设置密码: 它正确认证。我希望能够在符合的枚举中手动进行设置,而不是在中传递凭据。 我知道它正在使用身份验证挑战的后台,但我希望能够手动设置它。 这是我的实现: 问题答案: 最终弄清楚了问题

  • 目前我正在开发一个Java工具,它应该可以更新Confluence服务器页面。使用Curl一切都像一个符咒,但是当使用Postman或Java代码(HttpClient Java11)时,我得到了一个 HTTP状态401–未经授权 反应。 在下面的语句中使用curl curl--basic-u user:password-X PUT-H“内容类型:application/json”-d“@test