我有一个网站,它结合了 ASP.NET Core MVC 和基于角度的 SPA,我正在尝试使用 IdentityServer4 来保护它。当前登录流程如下所示:
- 用户单击主页上的登录按钮(www.example.com,基于 MVC)
- 用户被重定向到登录页面(login.example.com,基于 MVC)并登录
用户被重定向到 www.example.com/app 站点检测到它没有用户的 cookie,因此它将用户重定向到 login.example.com/connect/authorize 端点- 用户被重定向回带有 id_token 到 www.example.com/signin-oidc 的站点,这会丢弃 cookie
- 然后用户最终被重定向到应该显示 SPA 的 www.example.com/app
问题是当这最终完成时,SPA 需要访问令牌,以便它可以调用 API。我尝试使用 angular-auth-oidc-client 库,问题是这会等待整个 Angular 应用程序加载应用程序才发现它没有访问令牌并再次重定向到 login.example.com /connect/authorize 端点以获取令牌。
有没有更简单的方法来做到这一点?即在第 5 步使用访问令牌将用户重定向到应用程序?或者选择一种完全不同的方式来识别身份?