我有一个javascript文件(网站)使用了多个REST服务(在春季启动时),并且任何人都可以直接调用这些服务(您可以在任何浏览器上的开发人员控制台中看到API URL /参数)。 因此,我想防止直接调用API,当然这是从应用程序的正面进行的。
我看到可以使用具有弹簧安全性的API密钥,但是它可靠吗?因为我认为如果您使用开发人员控制台拦截消息,便可以看到密钥。
答案 0 :(得分:0)
您可以执行以下操作:
要设置每个端点的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));
}
例如:
@RestController
@RequestMapping({"/v2/"})
public class ExampleTestController {
@PreAuthorize("hasAuthority('ROLE_ADMIN')")
@RequestMapping(value = "/test", method = RequestMethod.GET)
String test() {
return "Hello";
}
}
使用spring安全性是安全的,因为总是在授予访问权限之前验证用户。即使在使用Oath2时,生成的密钥仍在验证用户登录后,并且可以通过在标头中传递请求或在其余模板中使用该密钥来验证对控制器的每个请求。