我一直使用Scriptmanager处理所有AJAX调用,但我开始扩展并且正在使用jQuery和JSON来使用ASP.NET 3.5 Web服务。我正在使用标准的jQuery调用,如下所示,这非常有效。我担心安全问题以及如何通过放弃Scriptmanager确保我不打开任何门。任何信息都值得赞赏,我在网上发现的更多信息与实现有关,而不是安全性。
$.ajax({
type: "POST",
url: "Webservices/Service.asmx/HellowWorld",
data: "{}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(msg) {
alert(msg.d);
}
});
更新:希望有人可以提供一些信息。
我想只允许经过身份验证的用户访问此服务我在MVC中使用ASP.NET成员资格服务,并希望确保我的jQuery AJAX(JSON)调用正在由经过身份验证的用户执行。任何信息都表示赞赏。
答案 0 :(得分:0)
在安全性方面,使用ScriptManager生成客户端代理以调用Web服务或直接使用jQuery之间没有内在差异。它们最终都使用纯文本有效负载生成对服务器的HTTP请求。
如果您关注消息和/或传输安全性,则需要使用SSL来加密客户端和服务器之间的传输通道。
答案 1 :(得分:0)
我在这个问题上寻找的是如何处理Web服务调用的安全性。回答,没有办法在没有传递某种形式的身份验证数据的情况下自动验证远程用户。
在这种情况下,我传递的加密令牌包含我用于验证用户身份的数据。令牌给他们传递。
如果有更好/更安全的方法,我会开放。
答案 2 :(得分:0)
我解决问题的方法是在webservice中构建一个验证子句。
MembershipUser u =Membership.GetUser(HttpContext.Current.User.Identity.Name);
if (u.IsOnline)
{
//do work
}
可能不是解决问题的最佳方法,它可能会很混乱。但这对我有用。理想的是,如果你可以在调用时检查HttpContext而不是在服务内部,但我一直无法弄清楚如何做到这一点。