使用Ajax调用的私有REST API

时间:2013-06-28 08:40:52

标签: ajax api rest

如何仅授权我的应用使用我的REST API?

我在Javascript中有这段代码

$.ajax({
                type: 'DELETE',
                url : 'removeTest',
                data: { ... },
                beforeSend:function(){
                    ...
                },
                complete:function(){
                    ...
                },
                success:function(data, textStatus, jqXHR){
                    ...
                }
            });

此调用将使用PHP中的REST API从数据库中删除用户。问题是每个人都可以删除用户,例如POSTMAN(Chrome插件)。如何保护我的REST API仅授权我的应用程序。

检查HTTP_REFERER是不够的。什么可能更好?

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

这里有几种可能性。通常,您可以授权用户,应用程序或两者。这取决于您的应用要求。

验证应用

要对应用程序进行身份验证,您可以使用基于令牌的系统,例如API-Key。这意味着任何请求都将使用其他请求参数进行签名。例如,在他们的S3服务中查看the way amazon does this。如果您的应用程序将是唯一可以访问其余API的应用程序,您可以简单地通过IP地址限制访问。

如果有多个用户通过您的客户端使用该服务,您可能还需要授权访问某些功能。例如:是否允许每个用户删除任何资源?如果答案是否定的,则必须实施

对用户进行身份验证和授权

在RESTful API中对用户进行身份验证的一种简单方法是使用 HTTP Basic或Digest Auth 。在此设置中,用户凭据通过Authorization标头以username:password的形式发送,作为Base64编码的哈希值发送到服务器。请注意,您只能通过使用HTTPS的安全连接来执行此操作!

此外,您还可以查看更复杂/更复杂的做法,例如 OAuth