Spring boot 防止直接调用我的spring boot rest API
我有几个由javascript文件(网站)使用的REST服务(在SpringBoot上),任何人都可以直接调用这些服务(在任何浏览器上都可以通过Developer控制台看到API url/参数)。 因此,我想防止直接调用API,当然,我的应用程序前端除外Spring boot 防止直接调用我的spring boot rest API,spring-boot,security,Spring Boot,Security,我有几个由javascript文件(网站)使用的REST服务(在SpringBoot上),任何人都可以直接调用这些服务(在任何浏览器上都可以通过Developer控制台看到API url/参数)。 因此,我想防止直接调用API,当然,我的应用程序前端除外 我看到我可以使用带有spring安全性的API密钥,但它可靠吗?因为我认为如果您使用Developer console截取消息,您可以看到密钥。您可以执行以下操作: 在springboot应用程序中禁用CORS,方法是按照您的意愿全局或每个端
我看到我可以使用带有spring安全性的API密钥,但它可靠吗?因为我认为如果您使用Developer console截取消息,您可以看到密钥。您可以执行以下操作:
- 在springboot应用程序中禁用CORS,方法是按照您的意愿全局或每个端点设置以下值
@CrossOrigin(origins = "http://localhost:9000")
@GetMapping("/greeting")
public Test testing(@RequestParam(required=false, defaultValue="Test") String name) {
System.out.println("in test");
return new Testing(10, String.format(template, name));
}
- 您可以使用spring安全性对控制器端点进行预授权,以确保只有经过授权的用户才能访问控制器
@RestController
@RequestMapping({"/v2/"})
public class ExampleTestController {
@PreAuthorize("hasAuthority('ROLE_ADMIN')")
@RequestMapping(value = "/test", method = RequestMethod.GET)
String test() {
return "Hello";
}
}
使用spring security是安全的,因为在授予访问权限之前,用户总是经过验证。即使在使用Oath2时,密钥也是在验证用户登录之后生成的,并且该密钥可以通过在头中传递请求或在rest模板中使用来验证发送给控制器的每个请求
- 隔离rest端点的另一种方法是使用负载平衡器(或ngnix或任何东西)阻止来自域外的对这些端点的请求