我正在开发提供REST API的Spring Boot Web应用程序。我的大多数页面(百万美元模板)都使用此API与后端进行通信(使用AJAX请求)。我已经阅读过基本身份验证,OAuth2等不同方法。这些方法描述了用户身份验证,之后用户可以访问API。但我不希望用户使用浏览器或REST客户端直接与我的API通信(即postman chrome扩展,可以访问浏览器的cookie,其中访问令牌通常是存储的)点。
我有这样的事情:
(1)用户 - > (2)MyOwnPages - > (3)RestAPI。
有没有办法防止直接沟通1-3?
我可以以某种方式确定请求是从我的页面发出的(即向每个请求添加某种访问令牌)?有没有最好的做法?
谢谢!
答案 0 :(得分:1)
不,这完全不可能。您可以添加令牌以使其更难,在Javascript中生成等等,但所有这样做会使您的页面变慢并且更有可能崩溃。
流程不是:
(1) User --> (2) MyOwnPages --> (3) RestAPI.
而是:
(1) User --> (2) Users Browser --> (3) RestAPI.
由于浏览器正在调用您的API,因此没有明智的方法可以区分它,cURL,Postman等。您可以做任何事情,用户可以说,Wireshark在确切地看到发送内容的方式中,他们可以做任何浏览器正在做的事情。
了解您为什么要这样做会更有帮助,因为无论您的最终目标是什么,都可能有更好的解决方案。