繁体   English   中英

为什么在Spring MockMVC单元测试中不传播身份验证?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM