我正在通过IdentityServer将ASP.NET Web应用程序从Forms身份验证转移到OIDC身份验证,并使用隐式流程来获取ID令牌 . 表单身份验证在客户端web.config中有选项,例如'timeout'和'slidingExpiration',我正在寻找一种方法来确保客户端在使用IdentityServer时是可配置的 .

我知道在这种情况下有两个独立的cookie管理系统 - 客户端和IdentityServer . 我想尽可能地对齐它们,并有一个地方来配置这些选项 . 这可能是在任何一方,一方将责任交给另一方 .

我探索过的一个选项是在两端设置UseTokenLifetime = true,然后使用IdentityServer Client属性IdentityTokenLifetime作为配置客户端超时的方法 . 然后,两个cookie应在IdentityTokenLifetime指定的同一时间到期 . 当客户端的cookie超时时,它将重定向到IdentityServer进行身份验证,其中将显示登录提示,因为它自己的cookie也将过期 . 但是,我不认为这允许滑动到期选项?

另一个选项可能是将UseTokenLifetime设置为false,在客户端cookie中间件中配置cookie选项,并确保客户端在进行身份验证时发送prompt = login . 这意味着即使IdentityServer的cookie设置与客户端不匹配(例如,在客户端过期后IdentityServer cookie仍然有效),它仍将始终显示登录提示 . 这样做的缺点似乎是,如果我添加更多客户端,它会抑制SSO,因为他们总是必须为每个客户端登录 .

我很感激任何想法

谢谢