我正在尝试按照本指南http://engineering.pivotal.io/post/faking_oauth_sso/测试一些oauth端点。
我创建了一个方法getOauthUserAuthentication()
,它返回一个oauth2身份验证对象,主体为'vince',权限为'ROLE_USER'。
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
的身份验证对象。
似乎正在正确创建令牌,但未将其传播到mockMvc创建的安全上下文。我错过了什么?
答案 0 :(得分:0)
运行测试时,我一直在调用与我创建的资源服务器配置类关联的配置文件。当我从活动配置文件注释中删除配置文件调用时,我在测试中创建的身份验证对象开始显示在控制器中。我相信config类创建的安全上下文覆盖了mockMvc创建的安全上下文。由于我没有发送持票令牌,配置类自动创建了anonymousUser原则。