如何保护仅从前端使用的API(Ajax调用)

时间:2015-08-12 10:17:40

标签: javascript api authentication token microservices

好吧,我创建了一个API来管理我们的网站,一些附件上传并存储到Amazon S3存储桶

场景:一旦访问者/用户在表单中并希望用附件提交它,一旦选择了文件,然后按钮点击一个Ajax请求就会激活到微服务API,这样它就可以将文件存储到S3做一些处理然后返回直接链接或标识符。

问题是:我们如何使用例如短暂的实时令牌或类似的东西来验证用户,而不会被劫持,误用令牌。

在Javascript中,访问者可以看到所有内容,我们尝试不在后端集成任何繁重的进程

1 个答案:

答案 0 :(得分:1)

如果我直截了当地提出您的问题,您将拥有一个Web界面,其中文件上传到S3存储桶,您需要确保在某个后端API(例如REST)中所有文件上传命令都将具有身份验证和授权。

答案很大程度上取决于您的架构,但一般来说,所有Javascript调用都只是HTTP调用。所以你需要HTTP身份验证/授权。通常,REST over HTTP最直接的方法是基本身份验证,客户端在每个请求中都会发送凭据。这可能听起来很奇怪,但它非常标准,因为HTTP应该是无状态的。

所以简短的回答,至少对于我刚刚描述的场景,将要求用户提供Javascript将保留在客户端的凭据,然后发送REST接口可以理解的基本身份验证。然后,服务器端进程将获取此类信息,并决定是否可以在某个S3存储桶中写入某个文件。