0

我在 MVC 网站和 SPA 网站上使用身份提供程序。我需要实现 SSO 功能,这意味着当 SPA 网站登录或退出时,MVC 网站应该是相同的。SPA 网站 SSO 功能通过使用 prompt=none 来检查用户是否首先登录到 Idp 并使用 OIDC 会话管理 (checksession) 来检查用户注销事件,效果非常好。

我的问题是,在MVC网站中,我使用的是MVC中的前通道注销机制,但是当Idp cookie本身过期时它不起作用(前通道注销仅在IDP cookie存在时才有效,因此当结束会话时端点被调用,服务器可以从cookie中检索有关用户需要注销哪些网站的信息)。

因此,由于 Idp cookie 不存在但 MVC 网站的用户仍处于登录状态(访问令牌尚未过期),我认为有两种方法可以解决此问题:

  1. 每次用户导航到我的应用程序中的不同页面时,重定向到 Idp 以检查用户登录状态(提示=无流)
    我认为这会通过不断重定向到 Idp 来导致网络流量。但是如果第二种方式(OIDC 会话管理)是不可能的,我猜这是最能接受的方式吗?

  2. 在 MVC 网站上使用 Oidc 会话管理,就像 SPA 网站一样。
    问题:我在网上找到的每个文档都表明会话管理适用于 SPA 或基于 javascript 的应用程序,而对于像 MVC 这样的服务器端 Web 应用程序,他们都建议使用前通道或后通道注销。但我真的不知道为什么。是否有任何理由不建议服务器端客户端进行会话管理?

注意:我也尝试使用反向通道注销,但由于可伸缩性问题,这是不可能的(无法找到用户在多个服务器中的位置)。

请帮助我解决这个问题,或者如果我误解了任何内容,请告诉我。谢谢!

4

0 回答 0