[英]Why is authentication not being propagated in spring mockmvc unit test?
我正在尝试按照本指南http://engineering.pivotal.io/post/faking_oauth_sso/来测试一些oauth端点。
我创建了一个方法getOauthUserAuthentication()
,该方法返回具有主体'vince'和权限'ROLE_USER'的oauth2认证对象。
Job newJob = jobRepository.save(job);
Authentication auth = getOauthUserAuthentication()
restMockMvc.perform(get("/api/jobs/{id}", newJob.getId())
.with(authentication(auth)))
.andExpect(status().isOk())
我设置在控制器内部断点,和称为SecurityContextHolder.getContext().getAuthentication()
返回与主要的认证对象anonymousUser
和当局ROLE_ANONYMOUS
。
似乎令牌已正确创建,但没有传播到模拟计算机创建的安全上下文中。 我想念什么?
运行测试时,我一直在调用与我创建的资源服务器配置类关联的配置文件。 当我从活动配置文件注释中删除了配置文件调用时,我在测试中创建的身份验证对象开始显示在控制器中。 我相信由config类创建的安全上下文将覆盖由嘲讽MockMvc创建的上下文。 由于我没有发送承载令牌,因此config类自动创建anonymousUser原理。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.