Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 对WCF服务身份验证的AJAX请求_Jquery_Asp.net_Ajax_Wcf_Cookies - Fatal编程技术网

Jquery 对WCF服务身份验证的AJAX请求

Jquery 对WCF服务身份验证的AJAX请求,jquery,asp.net,ajax,wcf,cookies,Jquery,Asp.net,Ajax,Wcf,Cookies,如果有人能帮我,我将不胜感激。目前,我正在ASP.NET应用程序上实现一些jQueryAjax方法,以获取数据并将其发布到服务器。我们希望在此基础上提供某种形式的身份验证,这种验证是轻量级的,并且实现起来相当快 目前,每个AJAX请求都会将表单验证cookie发送到我们的WCF服务,如Fiddler上所示。当我们收到对WCF服务的请求时,它有一个解密表单身份验证cookie的方法。目前,只有当cookie不为null且未过期时,它才会给出带有数据的响应。这工作得很好,cookie存在的唯一方式是

如果有人能帮我,我将不胜感激。目前,我正在ASP.NET应用程序上实现一些jQueryAjax方法,以获取数据并将其发布到服务器。我们希望在此基础上提供某种形式的身份验证,这种验证是轻量级的,并且实现起来相当快

目前,每个AJAX请求都会将表单验证cookie发送到我们的WCF服务,如Fiddler上所示。当我们收到对WCF服务的请求时,它有一个解密表单身份验证cookie的方法。目前,只有当cookie不为null且未过期时,它才会给出带有数据的响应。这工作得很好,cookie存在的唯一方式是用户通过我们的安全登录系统

我想知道的是,这是否是保护AJAX调用的一种有效形式,尽管是基本形式

模仿曲奇饼的形式容易吗?有可能绕过表单cookie吗?如果您有任何建议,我将不胜感激,因为我在这里有点不知所措

编辑:我们目前还启用了SSL和安全HTTPS传输

下面是我们的代码示例:

private bool AuthenticateAJAXRequest()
{
    // assume user is not authenticated
    bool authenticated = false;
    if (HttpContext.Current != null)
    {
        if (HttpContext.Current.Request != null)
        {
            var authCookie = HttpContext.Current.Request.Cookies["authCookie"];
            if (authCookie != null)
            {
                FormsAuthenticationTicket fTicket = FormsAuthentication.Decrypt(authCookie.Value);
                if (fTicket != null)
                {
                    if (!fTicket.Expired)
                        authenticated = true;
                }
            }
        }
    }
    return authenticated;
}
首先,AJAX(XHR-XMLHTTP请求)异步请求由“同源”策略绑定。这意味着浏览器将隐式地拒绝/限制对页面来源服务器以外的服务器进行AJAX调用。 这将处理跨域脚本攻击。(您仍然可以使用JSONp或手动使用脚本标记进行跨域异步调用,但这完全是另一回事,不在当前讨论范围内。) 从我收集的信息来看,如果你只是检查cookies,并且没有回退,那么你将会遇到麻烦,因为一些用户可能已经在他们的浏览器中关闭了cookies。相反,我建议使用用户级别的唯一ID,您可以为每个用户会话存储和检索这些ID。将此唯一id作为每个Ajax请求的一部分发送,并根据服务器上的数据存储(缓存或持久)对其进行验证。通过这种方式,您可以放心,无论cookies是什么,该系统都将继续工作。还要确保在用户注销后销毁唯一id,以便将来的任何请求(完整页面或Ajax)都不会被接受。
希望这能回答您的问题。

谢谢您的回复。域名问题并不重要,因为我们的服务和网站都托管在同一个网站上,我们已经测试过它们是否有效。至于cookies,我们的网站受众不会很大,它更多的是一个用户门户而不是一个网站。当前的实现已经使用了cookie,还有大量JavaScript。我们已经告诉我们未来的测试人员,为了使用该站点,他们需要启用cookie和JScript。关于这些唯一ID,您将如何获得分配给用户的唯一ID?他们的提供者密钥?或者别的什么。