我有一个工作spring-security
配置,它包装了我的基于球衣的 REST 端点并允许方法级访问。
包含快速重现问题所需的一切的示例项目:https ://github.com/pulkitsinghal/dummy-rest-api
// Server-Side jersey resource
@GET
@Path("/protected/myendpoint/")
@PreAuthorize("hasRole('DUMMY')")
public String getMyEndpoint(){
return "blah";
}
但是在为受保护的端点编写健全性测试时,我遇到了以下仅在单元测试中发生的异常:
Caused by:
org.springframework.security.authentication.AuthenticationCredentialsNotFoundException:
An Authentication object was not found in the SecurityContext
下面是基于 JerseyTest 的单元测试类的样子:
@Test
public void testProtectedEndpoint() {
WebResource webResource = resource();
webResource.addFilter(new HTTPBasicAuthFilter("username", "password"));
String responseMsg = webResource
.path("protected/myendpoint/")
.get(String.class);
System.out.println(responseMsg);
}
JerseyTest
在为受弹簧安全保护的端点设置时,有没有其他人遇到过这个问题?可以做些什么呢?
我在这里远程看到了一些连接:Spring Test & Security: How to mock authentication?但我还没有达到可以对该线程中发生的事情做出正面或反面的水平。想法?