IdentityServer4 外部注销不会删除 Google 登录 cookie

IdentityServer4 external logout doesn't remove Google sign-on cookie

我无法在 Google 登录下注销我的 identityServer。我可以通过 Google (外部)登录,没有任何问题,但注销从未成功。单击“注销”后,我总是收到一条消息说“您现在已注销”。但是当我再次尝试重新登录时,我总是在点击 Googol 按钮后立即进入。我的 Chrome 的开发工具显示与我的 Google 登录关联的 cookie 保留在那里,无论我是否单击注销。

如果我通过 Chrome 清除 cookie,我将能够进入 Google 登录页面。

为了在注销时删除程序中的 cookie,我从 AccountController 的注销函数中尝试了以下代码。我看到代码在调试模式下执行,但这没有任何区别 - 代码执行后 cookie 仍然存在,我仍然可以正常进入。

谁能告诉我我在这里缺少什么?还是根本无法从代码中删除 cookie?

要执行上游注销,IDP (Google) 必须支持 RP 启动的注销规范:

https://openid.net/specs/openid-connect-rpinitiated-1_0.html#RPLogout

但是 Google 的发现端点 (https://accounts.google.com/.well-known/openid-configuration) 没有通告 end_session_endpoint 因此我们不得不得出结论 [=29= 不支持它].

但是您可以在您的 authorization_endpoint 端点请求中使用 prompt=loginmax_age={number of seconds} 再次强制进行交互式身份验证。当您在回调中收到 id_token 时,您可以验证 auth_time 声明是否符合您决定的任何条件。最终结果是您可以坚持要求用户在每次往返 Google 时进行交互式身份验证。如果 auth_time 过去太远,您将阻止建立本地会话。