Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/35.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
internet explorer中的asp.net窗体身份验证问题_Asp.net_Authentication - Fatal编程技术网

internet explorer中的asp.net窗体身份验证问题

internet explorer中的asp.net窗体身份验证问题,asp.net,authentication,Asp.net,Authentication,我的公司有一个web应用程序,它托管在客户机上,在ASP.net中使用表单身份验证。当访问网站并尝试在登录页面上进行身份验证时,用户将被重定向回登录页面。当通过身份验证访问它时,工作正常,用户能够进入站点。我们不能在我们的开发环境中复制这种行为,所以我们非常确定它与他们的服务器/环境有关 这个问题只有在使用Internet Explorer(使用ie 6、7、8测试)时才会发生。当客户端尝试使用firefox时,身份验证工作正常 我创建了一个调试页面,登录页面在调用FormsAuthentica

我的公司有一个web应用程序,它托管在客户机上,在ASP.net中使用表单身份验证。当访问网站并尝试在登录页面上进行身份验证时,用户将被重定向回登录页面。当通过身份验证访问它时,工作正常,用户能够进入站点。我们不能在我们的开发环境中复制这种行为,所以我们非常确定它与他们的服务器/环境有关

这个问题只有在使用Internet Explorer(使用ie 6、7、8测试)时才会发生。当客户端尝试使用firefox时,身份验证工作正常

我创建了一个调试页面,登录页面在调用FormsAuthentication.SetAuthCookie后重定向到该页面,该页面显示有关身份验证cookie的信息。在Internet Explorer中点击时,验证cookie不存在。当在FireFox中点击它时,它会

以前有没有人遇到过类似的情况,或者对可能出现的问题有什么建议

编辑:

Web.config

<authentication mode="Forms">
  <forms name=".ASPXAUTH" loginUrl="Login.aspx" />
</authentication>
<authorization>
  <deny users="?" />
  <allow users="*" />
</authorization>   

 <!-- Page used to display authentication cookie information -->
 <location path="AuthDebugPage.aspx">
   <system.web>
     <authorization>
      <allow users="?"/>
     </authorization>      
   </system.web>
 </location>

他们域的管理员查看了组策略,查看他们是否将阻止用户在IE上接受Cookie的任何内容下推到其节点,但他没有找到任何内容。他还从域中删除了一台计算机,并清除了它的所有组策略,但在internet explorer中进行身份验证时仍然遇到同样的问题。

自2002年以来,Microsoft.NET中的Forms身份验证极不可能作为一般规则与Microsoftinternet explorer发生冲突。这显然是环境问题

我们要做的就是用Fiddler之类的工具观看网络,看看发生了什么。然后对Firefox执行同样的操作,并进行比较


一旦您看到差异,请尝试找出如何将差异限制在IE上。

说到IIS,您是否检查了IIS在站点实例上尝试使用的身份验证方法?我相信Firefox会说服IIS使用“基本”身份验证,而IE会尝试使用其奇特的Windows身份验证等等


另外,您是否在主机文件中指定了站点的IP/主机名?这可能会以某种方式造成不同(有时好,有时坏)。

就像ajh1138所说的,IE可能正在协商“集成身份验证”,而FireFox正在使用HTTP身份验证或普通的旧表单POST


IE可能映射到实际的Windows用户名(例如运行IE的用户),并且该用户可能无权访问该网页(即使匿名用户也无权访问)。这可能会产生你描述的行为。

正如约翰所说,这是一种环境因素。我们打开了无cookieless身份验证,它工作得很好,因此用户的身份验证是正确的。我们的一位客户发现,当他们仅使用IP地址访问网站(例如)时,网站行为正常,他们能够通过登录页面,但当他们使用DNS名称时,却无法通过。事实证明,他们在internet explorer中的区域确实允许对外部站点(DNS名称也解析了)有足够的信任,就像本地intranet站点有cookie一样。

我正在开发的站点在登录所有IE时也有类似的问题,只有一个是从Win 7运行的


实际的问题是我使用的主机名有下划线,不应该使用下划线。可能某些windows策略阻止为无效主机创建Cookie。

当服务器日期/时间不正确并导致AuthCookie过期日期不正确时,我也遇到了同样的问题

检查服务器的日期/时间是否正确。

使用以下方法:

int timeoutValue = 20; // This value is actually returned from a method;
FormsAuthenticationTicket authTicket = new FormsAuthenticationTicket(txtLogin.Text, false, timeoutValue);            
string encryptedTicket = FormsAuthentication.Encrypt(authTicket);
HttpCookie authCookie = new HttpCookie(FormsAuthentication.FormsCookieName, encryptedTicket);                 
authCookie.Domain = "uptime.com.br";
authCookie.Expires = DateTime.Now.AddMinutes(timeoutValue);
HttpContext.Current.Response.Cookies.Add(authCookie);  

也许auths可以帮助我们了解一些代码片段?您在web.config的forms authentication节点中设置了域值吗?您可以从web.config复制并粘贴整个部分吗?可能是因为人们有某种域策略设置,不允许在IE中使用Cookie?添加了auth代码和部分内容web.config发布并解决域策略问题。在web.Config的forms authentication节点中未设置域值。我认为这不是一个切实可行的解决方案,因为服务器在他们的控制下,该服务器的管理员将在fiddler上运行。如果您不找出问题所在,我看不出您如何可能解决该问题。这似乎指出了问题所在,但又是什么呢精确解是什么?我现在也遇到了同样的情况,但我不能要求我的客户使用IP地址而不是DNS。我仔细检查了我的DNS,发现里面有一个下划线。对于那些到达这里的人,你也可以检查这个。参见
int timeoutValue = 20; // This value is actually returned from a method;
FormsAuthenticationTicket authTicket = new FormsAuthenticationTicket(txtLogin.Text, false, timeoutValue);            
string encryptedTicket = FormsAuthentication.Encrypt(authTicket);
HttpCookie authCookie = new HttpCookie(FormsAuthentication.FormsCookieName, encryptedTicket);                 
authCookie.Domain = "uptime.com.br";
authCookie.Expires = DateTime.Now.AddMinutes(timeoutValue);
HttpContext.Current.Response.Cookies.Add(authCookie);