Spring禁用@EnableResourceServer

时间:2017-08-02 15:48:15

标签: java spring spring-mvc oauth-2.0

我有资源服务器,当它启动时 - 它正在向身份验证服务器发送请求(“http://localhost:xxxx/auth/oauth/token_key”),并且在所有启动并运行时都可以。

但是当我测试我的服务时,我根本不需要它。如何禁用资源服务器或者我应该模拟一些东西,以便它不依赖于auth服务器(对于控制器的未来安全测试)?

我的春季靴子主要:

@SpringBootApplication
@EnableEurekaClient
@EnableResourceServer
public class CalendarApplication {

    public static void main(String[] args) throws Exception {
        SpringApplication.run(CalendarApplication.class, args);
    }
}

application.yml

security:
  basic:
    enabled: false
  oauth2:
    resource:
      jwt:
        keyUri: http://localhost:xxxx/auth/oauth/token_key

测试类注释:

@RunWith(SpringJUnit4ClassRunner.class)
@WebMvcTest(value = TypeController.class, secure = false)
public class TypeControllerTest {}

3 个答案:

答案 0 :(得分:4)

为什么不为具有单独个人资料(@Configuration)的@AuthenticationServer创建单独的@Profile("test")?这样,您不需要禁用安全性并且可以拥有内存中令牌。这就是我处理它的方式。您还可以完全禁用Spring Security以进行测试。看看this question

答案 1 :(得分:2)

您可以使用@WithMockUser进行测试

Testing Method Security

答案 2 :(得分:0)

我解决这个问题的方法是在我用于测试的数据库中创建一个令牌,并确保对我的API的请求在向资源发出请求之前使用了令牌正在测试中。

希望您的令牌存在,因为它可以作为一种合理的安全性检查。如果您希望在没有特定令牌的情况下无法访问此资源,那么这是一个非常有用的测试。