【问题标题】:Forms Authentication: Determine why ticket is invalid表单身份验证:确定票证无效的原因
【发布时间】:2019-01-31 16:25:31
【问题描述】:

我有一个使用表单身份验证的 Web 应用程序。该应用程序是 MVC,并且还有一个用于来自我们的移动应用程序的请求的部分。客户端的移动应用程序有一段时间没有使用,然后又回来了,现在我看到了这个登录的事件视图:

事件代码:4005 事件消息:请求的表单身份验证失败。原因:提供的票证无效。

我还在 IIS 中记录 cookie,发现 ASPXAUTH 看起来正确,并且在第一个请求中出现。然后,在 Authorize 属性处,它重定向到登录页面并生成该错误消息。

我遇到的问题是我们不能让客户端通过登录移动应用程序重新进行身份验证,因为这会导致数据丢失,这在我们的案例中不是一个选项。

所以我的问题是,有没有办法确定它为什么无效。比如,过期的token,无效的token等?我问是因为我已经研究过,并且有不同的方法来解决这个问题,具体取决于哪个原因。比如机器密钥问题等等……

其他细节: IIS 上的机器密钥:在运行时自动生成,并且由应用程序唯一。验证和解密都输入了 AutoGenerate,IsolateApps。

FormsAuthenticationTicket 过期在最初生成时设置为 int.MaxValue。

很难复制。我最初有一段时间无法重现这一点。昨晚它似乎是随机发生的,所以现在我有一个移动应用程序卡住了这个无效票证错误来测试。

我看过这篇文章: ASP.NET Forms Authentication failed for the request. Reason: The ticket supplied has expired

感谢任何帮助。 谢谢,

【问题讨论】:

    标签: c# asp.net-mvc forms-authentication windows-server-2012


    【解决方案1】:

    IIS 上的机器密钥:在运行时自动生成

    大概是这个原因。如果您的机器密钥不是静态的,那么每次回收您的应用程序池时都会重新生成它。一旦发生这种情况,它将使您现有的所有登录名无效。

    【讨论】:

    • 是的,我通过重新启动 iis 进行了测试,发现它使令牌无效。未选中并且现在可以使用。谢谢!
    • @jazzmasterkc - 你能进一步解释一下吗?
    • @Rick 这是很久以前的事了,但我相信你可以通过 IIS -> 点击你的服务器 -> 在主区域点击“Machine Key” ->取消选中“运行时自动生成”。这也可以在站点级别完成。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-26
    • 2011-07-13
    • 2013-10-30
    相关资源
    最近更新 更多