问题描述
我正在为OpenId服务器使用OpenIdDict库。当我处于EST(-5h)时区时,一切工作正常。但是,当我移至UTC + 03时区时,我会不断收到错误消息:
OpenIddict.Server.Internal.OpenIddictServerHandler:错误:令牌 请求被拒绝,因为授权码或刷新 令牌已过期。
完全相同的代码。当我调用令牌交换端点时发生错误。我检查了数据库,发现所有值似乎都是正确的UTC值。
我发现在AspNet.Security.OpenIdConnect.Server \ src \ AspNet.Security.OpenIdConnect.Server \ OpenIdConnectServerHandler.Exchange.cs处引发了错误。但是我不确定如何调试它。
解决方法
该错误的原因是Oracle MySql驱动程序https://bugs.mysql.com/bug.php?id=92367中的一个相当老的问题。如果您遇到同样的问题,可以在https://github.com/openiddict/openiddict-core/issues/1097#issuecomment-698374105上找到很好的解释和解决方法。 目前,最好的解决方案似乎是切换到Pomelo驱动程序:https://www.nuget.org/packages/Pomelo.EntityFrameworkCore.MySQL