我有一个基于声明的身份验证的应用程序,最近我遇到了一个问题,随机我失去了身份验证。该应用程序通常从 System.Security.Claims.ClaimsIdentity 获取它的身份,声明信息,并且它授权正常。由于某种原因,在点击不同的页面后,我失去了身份验证,似乎在查看 System.Security.Claims.WindowsIdentity ,并且它以null异常退出,因为现在没有更多的授权信息。我也在使用IdentityServerV3。我为缺乏具体的技术数据而道歉,但是想知道是否有人遇到过这个问题。在我第一次认为它可能即将到期之后,没有具体时间这样做。它发生得非常随机。我已经包含了屏幕抓取:
这是我获得授权的时间
这是10秒钟后
如果您需要任何进一步的信息,请提前告知我并提前致谢!
答案 0 :(得分:1)
我有类似的问题,随机丢失身份验证,由于我记得的三个原因,
1)多线程 - 代码由不具有身份上下文的不同线程执行
2)cookie大小超过浏览器限制认证cookie在传回服务器时获取分块
3)托管在多个实例中的身份服务器和配置为在内存中存储令牌的身份服务器。
关于你的情况,我的直觉可能是完全红色的鲱鱼,1)10秒后执行你的代码的线程在不同的身份上下文中,我建议尝试验证你的代码的任何路径可以通过多个线程首先,同时检查可以在输出窗口中找到的thinktecture日志,如果您使用默认日志记录提供程序来查看是否有任何可疑
希望有所帮助