使用 Azure AD 时抛出 "IDX10223: Lifetime validation failed. The token is expired." Microsoft.Owin.Security.OpenIdConnect

Throw "IDX10223: Lifetime validation failed. The token is expired." when working Azure AD with Microsoft.Owin.Security.OpenIdConnect

我正在将“Microsoft Azure AD”集成到我们的 Asp.NET 网络项目中,按照 https://azure.microsoft.com/en-us/documentation/articles/active-directory-devquickstarts-webapp-dotnet/ 中显示的指南一切正常,即使我将其部署到 IIS 8.5。但是,当我将页面保留在 Chrome 中一晚并在第二天早上尝试通过刷新再次访问它时,情况变得糟糕,它遇到了异常:

Server Error in '/' Application.
--------------------------------------------------------------------------
IDX10223: Lifetime validation failed. The token is expired.
ValidTo: '05/19/2016 10:45:59'
Current time: '05/19/2016 21:46:31'.

有人遇到过同样的问题吗?如何刷新令牌?我尝试直接注销并更改 public 地址,但都不起作用。

顺便说一句,我做了一些研究,但只提到它已在“AspNet.Security.OpenIdConnect.Server”而不是“Microsoft.Owin.Security.OpenIdConnect”中得到解决。

我遇到了同样的问题,git 上有人在这里说它的错误 https://github.com/aspnet-contrib/AspNet.Security.OpenIdConnect.Server/issues/191 但我认为它与您的机器时间有关,因为 OpenidConnect OAuth 令牌的有效期为 1 小时。如果您的机器时间设置错误,那么它的行为如下。您可以更改时间尝试对此进行测试。请也清除您的浏览器 cookie,这样框架就不会使用旧的 cookie。

在我的例子中,Identity Server 的时间早于我使用该服务的机器。设置正确时间后,您也可以尝试清除浏览器cookies。

在我们的案例中,这是一个 Docker 容器问题。让 PC 休眠后,结合某种 Docker 更新,及时等于 Docker 容器堆栈。 Docker 清理和机器重启,对其进行排序。

就我而言,date/time Windows Pro 10(我用来登录的设备)的设置未设置为自动。 将其设置为 date/time 自动解决了问题。

我有一个类似的“IDX10222”错误,在将 windows 时区设置为自动并重新启动系统后能够登录。

另外必须添加“Microsoft.IdentityModel.Logging.IdentityModelEventSource.ShowPII = true;”能够在此处查看日期和时间 - 令牌尚未生效。 ValidFrom: '[PII 已隐藏。有关详细信息,请参阅 https://aka.ms/IdentityModel/PII ]', Current time: '[PII is hidden. For more details, see https://aka.ms/IdentityModel/PII]'。