我正在Angularjs中创建一个Web应用程序,它显示来自第三方API(json)的数据。这不是免费的API,我必须根据调用的数量付费。
我获得了一个API密钥,我称之为: https://apiservice.com?key=1234567&p1=x&p2=y
我想确保我的api密钥仅由我的网络应用程序使用,所以我在我的服务器上创建了一个代理。现在,我的角度应用程序调用我的服务器: https://myserver.com/myapiproxy/?p1=x&p2=y,服务器使用服务器上保存的密钥调用api,并将json数据返回给客户端。这样钥匙就是保密的。
然而,目前没有什么可以阻止别人打电话给#34; myapiproxy"并获取数据。
有没有办法确保只有我的应用获取数据,而其他人无法以我的费用拨打api?
我搜索了几个小时,但我找不到真正安全的答案。 HTTP referer不是一个好的答案,因为它很容易被欺骗。
答案 0 :(得分:0)
查看 JSON网络代币 - https://jwt.io/ 这是确保通话安全的好方法。它有角度模块 - https://github.com/auth0/angular-jwt
当用户加载您的应用时,您可以在后端提供令牌jenerate并将其存储在本地存储中。 与每次api通话相比,您可以检查此令牌是否真实。