【问题标题】:IIS Forms Authentication Not Recognizing CookieIIS 表单身份验证无法识别 Cookie
【发布时间】:2013-03-06 16:40:55
【问题描述】:

由于某种原因 IIS 无法识别我的表单身份验证 cookie,它一直重定向到登录页面。登录页面是基于使用 .NET 集成的 ColdFusion 10。我基本上试图模仿this MSDN article 的“创建表单身份验证 Cookie”部分。

IIS 7.5 身份验证通过以下设置启用了表单身份验证:

  • 登录网址:/my/login/page.cfm
  • 超时:30
  • 模式:使用 cookie
  • 名称:.CFAUTH
  • 保护:加密
  • 需要 SSL:否
  • 延长有效期:是

代码基本上是这样的:

<!--- Authenticating code here... --->

<!--- Create .NET Instances --->
<cfobject type=".NET" assembly="C:\Windows\Microsoft.NET\Framework64\v4.0.30319\System.Web.dll" class="System.Web.Security.FormsAuthentication" name="authForm" />
<cfobject type=".NET" assembly="C:\Windows\Microsoft.NET\Framework64\v4.0.30319\System.Web.dll" class="System.Web.Security.FormsAuthenticationTicket" name="authTicket" />

<!--- Create Auth Ticket --->
<cfset authTicket.init(2, "user.name", Now(), DateAdd("n", 30, Now()), false, "") />

<!--- Encrypt the Ticket, Creating Cookie Value --->
<cfset authCookie = authForm.Encrypt(authTicket) />

<!--- Create the actual Cookie --->
<cfcookie name=".CFAUTH" expires="#DateAdd("n", 30, Now())#" value="#authCookie#" />

<!--- Redirect Back to Originating URL --->
<cflocation url="#URL.ReturnUrl#" />

我知道代码的所有内容都可以正常工作,因为浏览器中设置了 cookie并且我可以Decrypt() cookie 值和Get_Name() 来检索正确的用户名。但是,IIS 并不关心 cookie。有什么想法吗?我错过了什么吗?感谢您的任何反馈!

【问题讨论】:

  • 好的,我发现了一个应用程序日志事件,它与以下内容相关:“请求的表单身份验证失败。原因:提供的票证无效。”所以IIS至少在尝试。我怀疑这与用于加密的机器密钥有关,ColdFusion 集成和 IIS AppPool 可能不同。现在我只需要弄清楚如何验证和匹配它们..

标签: iis cookies coldfusion form-authentication


【解决方案1】:

再次检查您的 cookie。 ColdFusion 将 cookie 名称大写,无论您如何键入名称。还要验证域。我以前在涉及 cookie 的地方混合 CF 和 .Net 时遇到过问题。我们最终将问题追溯到大写问题和 cookie 域。

为您的浏览器获取一个 cookie 插件。在寻找 cookie 问题时,这些是无价的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-02-29
    • 1970-01-01
    • 2020-01-27
    • 2021-06-28
    • 1970-01-01
    • 1970-01-01
    • 2014-08-31
    • 1970-01-01
    相关资源
    最近更新 更多