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

我有一个网站,它结合了ASP.NET核心MVC和基于角度的SPA,我试图使用IdentityServer4保护 . 登录流程目前看起来像:

  • 用户点击主页上的登录按钮(www.example.com,基于MVC)

  • 用户被重定向到登录页面(login.example.com,基于MVC)并登录

  • 用户被重定向到www.example.com/app,其中网站检测到用户没有Cookie,因此会将用户重定向到login.example.com/connect/authorize endpoints

  • 用户被重定向回网站,id_token返回www.example.com/signin-oidc,丢弃了Cookie

  • 然后,用户最终被重定向到www.example.com/app,后者应显示SPA

问题是,当最终完成时,SPA需要访问令牌,以便它可以调用API . 我尝试使用angular-auth-oidc-client库,问题是这等待整个角度应用程序加载应用程序只是为了找出它没有访问令牌并再次重定向到login.example.com / connect / authorize endpoints 获取令牌 .

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

回答(1)

3 years ago

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

所有你从角应用程序调用的应该通过这些控制器,这将调用您的服务器apis .