0

我有一个网站,它结合了 ASP.NET Core MVC 和基于角度的 SPA,我正在尝试使用 IdentityServer4 来保护它。当前登录流程如下所示:

  1. 用户单击主页上的登录按钮(www.example.com,基于 MVC)
  2. 用户被重定向到登录页面(login.example.com,基于 MVC)并登录
  3. 用户被重定向到 www.example.com/app 站点检测到它没有用户的 cookie,因此它将用户重定向到 login.example.com/connect/authorize 端点
  4. 用户被重定向回带有 id_token 到 www.example.com/signin-oidc 的站点,这会丢弃 cookie
  5. 然后用户最终被重定向到应该显示 SPA 的 www.example.com/app

问题是当这最终完成时,SPA 需要访问令牌,以便它可以调用 API。我尝试使用 angular-auth-oidc-client 库,问题是这会等待整个 Angular 应用程序加载应用程序才发现它没有访问令牌并再次重定向到 login.example.com /connect/authorize 端点以获取令牌。

有没有更简单的方法来做到这一点?即在第 5 步使用访问令牌将用户重定向到应用程序?或者选择一种完全不同的方式来识别身份?

4

1 回答 1

0

首先,在第 2 步之后用户应该登录,然后第 4 步为什么 3,听起来不对。这种情况应由混合流处理,当第 4 步发生时,客户端应用程序应具有 id 令牌和访问令牌。您现在应该拥有可以访问“访问令牌”的控制器。您可以创建一个基类,该基类返回带有标头的 httpclient。

你从 Angular 应用程序调用的所有内容都应该通过这些控制器,这些控制器将调用你的服务器 API。

于 2017-09-13T15:54:33.267 回答