安全地从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个问题很简单:)
- 你可以使用上面的链接轻松地从jQuery调用(即不使用第三方库)
- 如果没有,那么保护我的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]
- 不使用ajax下载文件
- 403测试azure Blob存储上载时出错
- Angularjs + ASP.NET MVC + ASP.NET Web API
- 即使我可以看到JSON有效负载返回,jQuery ajax调用跨域返回状态404
- MVC 4.5 Web API请求不起作用
- 带有额外参数的Webapi ajax formdata上传
- ASP.NET MVC 4 Web Api ajax文件上传
- X-Frame-Options拒绝加载:“http://test.test.net/Feedback/Create?appId=TestApp”不允许使用MVC5进行跨源框架
- Jquery Ajax调用WEB API