我可以在没有JavaScript身份验证的情况下访问API吗? 情况
我用AngularJS开发了一个WebApp我可以在没有JavaScript身份验证的情况下访问API吗? 情况,javascript,angularjs,api,rest,web-applications,Javascript,Angularjs,Api,Rest,Web Applications,我用AngularJS开发了一个WebApp 我在服务器端有一个restful API,其中包含GET和POST命令 我想在我的模块中使用API(在JavaScript中是指)来显示和编辑我的数据 我想用某种身份验证来保护API(例如,使用API密钥的基本身份验证) 我不想在用户使用应用程序本身时保护API 实际问题 好吧,我想最后一点有点不清楚 我希望用户可以在没有任何身份验证的情况下将应用程序与浏览器一起使用 但当第三方应用程序想要访问API时,它必须使用身份验证 由于JavaScrip
- 我在服务器端有一个restful API,其中包含
和GET
命令李>POST
- 我想在我的模块中使用API(在JavaScript中是指)来显示和编辑我的数据李>
- 我想用某种身份验证来保护API(例如,使用API密钥的基本身份验证)
- 我不想在用户使用应用程序本身时保护API
但当第三方应用程序想要访问API时,它必须使用身份验证 由于JavaScript是在客户端执行的,我当然不能将主密钥写入js或类似的东西 有什么模式或解决方案可以解决这个问题吗 更多规格 指及 在服务器端,我使用它的内置模板引擎。我确实使用了模板引擎,实际上只是在索引页面上动态插入CSS和JS 用于身份验证的代码类似于:
def is_authenticated(request):
if 'api_key' in request.arguments:
return sql('SELECT id FROM keys WHERE key=%S' % request.arguments['api_key']).count == 1
我的AngularJS模块正在执行类似的操作:
$http.get('/api/foo?api_key=1234')
.then(function (result) {
$scope.data = result.data
});
如您所见,我正在将API密钥写入js。但我不想避免这种情况
还有,你所说的第三方到底是什么意思
不是第三方请求:使用http://App.example.com上的应用程序和浏览器
例如,第三方请求可能来自Android应用程序。来自外部或远程的东西。来自浏览器的JS请求在上实际页面不会来自远程(再次说明:因为它是JS,所以实际上来自远程-但我希望现在它变得更清晰) 哦,在我忘记之前。。。 我知道我的计划有点奇怪,但这只是一个学习(-web开发)-通过做项目。
此外,API密钥并不是绝对避免滥用,而是记录第三方的使用情况
PS我希望我的问题对你来说是清楚的嗯,我将尝试解决这些问题,但这里有几件事
查看其他组织如何允许您访问其API(例如Google、LinkedIn、Facebook、Twitter),以了解其工作原理。在所有这些情况下,您都需要登录到服务才能生成API密钥,在某些情况下,您必须指定使用该API密钥的请求将来自哪个域。如果您使用相同的预防措施,根据注册API用户的数据库检查随请求发送的API密钥,并验证请求中的域,那么我会说您的状态非常好。您还不清楚。在什么情况下你不想保护它?您的意思可能是:将其公开为Java API层,并通过HTTP身份验证保护REST API?还有,你说的第三方到底是什么意思?@EliranMalka更新了我的问题-希望现在能更清楚