IdentityServer4 - 结合MVC和SPA - 避免额外的往返

时间:2017-09-13 15:42:41

标签: angular asp.net-core-mvc identityserver4 oidc implicit-flow

我有一个网站,它结合了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. 然后,用户最终会重定向到www.example.com/app,后者应显示SPA
  6. 问题是,当这最终完成时,SPA需要访问令牌,以便它可以调用API。我尝试使用angular-auth-oidc-client库,问题是这等待整个角度应用程序加载应用程序只是为了找出它没有访问令牌并再次重定向到login.example.com / connect / authorize端点获取令牌。

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

1 个答案:

答案 0 :(得分:0)

首先,在第2步之后,用户应该登录然后步骤4为什么3,不是正确的。此方案应由混合流程处理,并且当步骤4发生时,客户端应用程序应具有id令牌和访问令牌。你现在应该有控制器,你可以访问“访问令牌”。您可以创建一个返回带有标头集的httpclient的基类。

来自angular应用程序的所有调用应该通过这些控制器,这将调用您的服务器api。