使用简单令牌保护REST服务

时间:2014-03-04 06:48:48

标签: rest asp.net-web-api restful-authentication wcf-web-api

我的应用程序中有一个下拉列表,我使用Ajax调用填充数据,如下所示。这很好用,我的Web API网址是“http://example.com/Service.svc/json/getairports

    $(function () {
    $.getJSON("http://example.com/Service.svc/json/getairports", {}, function (data) {
        $("#airport-departure-modal, #destination-airport-modal").html("")
        $.each(data, function (index, element) {
            $("#airport-departure-modal, #destination-airport-modal").append("<option id=" + element["AirportCode"] + ">" + element["AirportName"] + "</option>");
        });
    });
});

但我担心的是安全性,因为任何人都可以使用视图源或开发人员工具查看此URL。所以我想引入一个令牌并将其传递给像“http://example.com/Service.svc/json/getairports?token=SECUREKEY”这样的服务,但我想知道这是如何解决问题的,因为在视图源中也可以看到安全密钥。 所以我的问题是如何保持安全密钥在客户端不可见或仅在启动ajax调用时动态传递?

仅供参考,我将在生产中使用HTTPS,以便仔细嗅探电线。同样不是这样,虽然Web API服务可能托管在单独的节点上,但此服务仅在同一应用程序中使用。

请告知是否可能有一些替代但简单的解决方案适用于上述情况。我知道其他高级机制,如OAuth,HMAC,Amazon S3等。但我只是希望有一个简单的解决方案。

1 个答案:

答案 0 :(得分:0)

你究竟想要解决什么?您是否要阻止用户以编程方式调用您的API?如果您的浏览器可以获得某些东西,那么具有view-source功能的用户也是如此 - 这样做是徒劳无功的。实际上,听起来你想要阻止CSRF。

This answer应该会有所帮助。