我们使用IdentityServer4来保护我们的Azure上的ASPnetCore应用程序接口。今天下午我们遇到了一件非常奇怪的事情。
我们的API之一只是根据用户的子声明(例如userid)返回数据库表中的所有项。今天有两位用户报告说没有看到他们自己的物品。到目前为止,这个代码已经运行了几年了。
我们的startup.cs包含以下内容:
services.AddStackExchangeRedisCache(action =>
{
action.Configuration = Configuration["RedisConnectionString"];
});
services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddIdentityServerAuthentication(options =>
{
options.Authority = Configuration["identityServerUrl"];
options.ApiName = "<<redacted>>";
options.ApiSecret = "<<redacted>>";
options.EnableCaching = true;
options.CacheDuration = TimeSpan.FromMinutes(5);
});由于Redis上的超时问题,我们添加了以下行:
ThreadPool.SetMinThreads(300, 300);这可能与userid被交换有关吗?由于是受保护的API,所以所有的请求都有一个承载token,该token在Redis中使用上述逻辑进行验证。userid怎么会突然不同呢?
谢谢你和我一起思考!
发布于 2021-04-26 17:21:25
似乎看到所有错误数据的呼声被误解了,上面提到的逻辑仍然像预期的那样工作。用户is是正确的。我们仍然有一些其他的问题要解决,但这与这个问题无关。
https://stackoverflow.com/questions/67233108
复制相似问题