IdentityServer 和 Asp.net MVC

IdentityServer and Asp.net MVC

我正在构建一个应用程序,它是一个 Javascript SPA,后端带有 Asp.net mvc 控制器。我正在尝试使用 IdentityServer 进行身份验证。我的控制器上有授权属性。我的要求之一是用户的会话应在一定时间内过期(如果没有 activity,应提示用户登录)。由于安全限制,隐式流程对我不起作用。我抓取了 Identity4 示例 https://github.com/IdentityServer/IdentityServer4.Samples 并尝试使用 cookieauthentication 中间件,设置 ExpireTimeSpan 以查看是否使 cookie 过期。不知何故,即使在指定的时间跨度到期后,我仍然能够调用控制器。如何使用 Identity Server 和 Asp.net mvc 完成类似于 asp.net 会话超时的操作?

这是已知问题,请参阅 https://github.com/aspnet/Security/pull/893,已针对 1.1.0 修复。

等待1.1.0版本或使用OnTokenValidated设置过期属性:

OnTokenValidated = async (context) =>
{
     context.Properties.ExpiresUtc = <expire>;
     await Task.FromResult(0);
}

另见另一种解决方案:https://github.com/aspnet/Security/issues/855#issuecomment-229495399