2

我正在开发提供 REST API 的 Spring Boot Web 应用程序。我的大部分页面(thymeleaf 模板)都使用这个 API 与后端通信(使用 AJAX 请求)。我已经阅读了不同的方法,例如基本身份验证、OAuth2 等。这些方法描述了用户身份验证,之后用户可以访问 API。但我不希望用户使用浏览器或 REST 客户端(即 postman chrome 扩展,它可以访问浏览器的 cookie,通常存储访问令牌)直接与我的 API 通信。

我有这样的东西:
(1)用户->(2)MyOwnPages->(3)RestAPI。

有没有办法防止直接沟通 1-3 ?
我能否以某种方式确定该请求是从我的页面发出的(即向每个请求添加某种访问令牌)?有没有最佳实践?

谢谢!

4

1 回答 1

2

不,这完全不可能。您可以添加令牌以使其更难,在 Javascript 中生成内容等,但所有这些都会使您的页面变慢并且更有可能崩溃。

流程不是:

(1) User --> (2) MyOwnPages --> (3) RestAPI.

反而:

(1) User --> (2) Users Browser --> (3) RestAPI.

而且由于是浏览器调用您的 API,因此没有明智的方法来区分 cURL、Postman 等之间的区别。您可以做的任何事情,用户都可以使用Wireshark等方式来查看到底是什么正在发送,然后他们可以做任何浏览器正在做的事情。

准确了解您为什么要这样做会更有帮助,因为无论您的最终目标是什么,都可能有更好的解决方案。

于 2016-07-27T16:34:02.040 回答