安全地从jquery调用我的web api

我有一个简单的问题,可能指出一个复杂的答案:(

我有一个web api工作正常。 但现在我想设置身份validation/授权。 我需要它在所有平台上工作,但主要来自jQuery。 当然,我不希望以明文forms在管道中发送我的用户名和密码,如下所示:

function GetAllCategories() { var credentials = $.base64.encode('r3plica:mypassword'); var authType = "Basic " + credentials; $.ajax({ url: "http://localhost:18904/api/Categories", type: "GET", beforeSend: function (xhr) { xhr.setRequestHeader("Authorization", authType); }, success: function (data) { alert('Success!'); }, error: function () { alert('error'); } }); } 

所以我一直在寻找其他选择。 是使用3腿OAuth的唯一选择吗? 我希望只是将查询字符串键/值传递给我的api并让它处理所有内容,但我无法找到一步一步的过程。 一切似乎都很复杂。

那么,有谁知道我能做什么? 我已阅读负载并试图实现大量的东西。

我设法让这个工作: http : //codebetter.com/johnvpetersen/2012/04/04/moving-from-action-filters-to-message-handlers/从我能说的,你需要加密你的字符串(用户名)在使用您的公钥发送到api之前,然后api将使用私钥解密并授权您。

所以我的2个问题很简单:)

  1. 你可以使用上面的链接轻松地从jQuery调用(即不使用第三方库)
  2. 如果没有,那么保护我的API的最佳方法是什么,以便可以直接从jQuery.ajax调用调用它?

只是为了澄清,我正在使用SSL作为API

提前干杯,

/ r3plica

对于网站(用户可以查看源代码),我们通过PHP生成AuthenticationToken并将其放入javascript中。 令牌会更改每个页面重新加载。

例如:

  [...] $.ajax( [..] beforeSend: function (xhr) { xhr.setRequestHeader("ownToken", authToken); }, 

并检查Token Serverside。

您没有很多选项可以以最佳方式保护您的应用程序,因为所有呼叫都是从前端应用程序进行的,因此始终可以嗅探呼叫。

但是,您可以考虑将ssl与asp.net身份validation结合使用。

请查看我的其他post以了解身份validation的可能性: ASP.NET Web API身份validation选项

回到你的问题:你想要实现的目标可以简单地使用asp.net表单身份validation来完成。 您可以使用Authorize属性修饰视图方法(在控制器类中);

  [Authorize]