MVC 和 SPA 应用程序之间基于 Identity Server 4 的共享身份验证

Shared authentication based on Identity Server 4 between MVC and SPA applications

我在同一个域下有两个解决方案。第一个是基于 IS4 OpenID Connect 提供程序进行身份验证的 MVC 应用程序,我使用的是代码流。第二个是 Angular SPA 应用程序,后端在 ASP .NET Core 上(服务器只提供静态文件),这里的身份验证也应该包含在 IS4 中。我的问题是如何与 SPA 应用程序共享 MVC 应用程序的身份验证状态,反之亦然。我还可以补充一点,没有必要有两个独立的客户端。可以在一个客户端下为两个应用程序共享身份验证。谢谢。

示例: mysite.com/page1 - MVC 客户端, mysite.com/page2 - SPA 客户端

身份验证状态将是独立的,因为它们使用两种不兼容的技术:

  • 客户端 SPA 使用令牌调用 API
  • 服务器端网络应用程序使用身份验证 cookie 调用后端

虽然常见的是带有身份服务器的 SSO 会话 cookie,因此在登录应用程序 1 后,您可以单点登录应用程序 2 - 最终用户无需再次登录。

这就是单独的 OAuth 应用程序的行为方式 - 单独的重定向意味着它们可以获得具有不同 API 访问级别的访问令牌。

这是最简单的解决方案,任何其他选项都可能需要大量的重新设计,并且有可能变得有点老套。