Angular 单页应用程序:使用OAuth2授予授权码

Angular 单页应用程序:使用OAuth2授予授权码,angular,oauth-2.0,authorization,single-sign-on,spring-security-oauth2,Angular,Oauth 2.0,Authorization,Single Sign On,Spring Security Oauth2,我正在学习教程。 当前端和后端位于不同的服务器上时,我需要了解基于服务器的OAuth2流 根据教程,后端提供了/login/facebook端点,基本上重定向到facebook,授权后返回重定向url。当前端是后端部署的一部分时,它可以正常工作。然而,当我将前端和后端拆分到不同的应用程序时,我面临着一些问题,需要了解如何正确操作 假设FE是localhost:3000和my-super-duper-site.com 让我们假设BE是localhost:8080,对公众不可见 假设FE正在使用a

我正在学习教程。 当前端和后端位于不同的服务器上时,我需要了解基于服务器的OAuth2流

根据教程,后端提供了/login/facebook端点,基本上重定向到facebook,授权后返回重定向url。当前端是后端部署的一部分时,它可以正常工作。然而,当我将前端和后端拆分到不同的应用程序时,我面临着一些问题,需要了解如何正确操作

  • 假设FE是localhost:3000和my-super-duper-site.com
  • 让我们假设BE是localhost:8080,对公众不可见
  • 假设FE正在使用angular2,并且正在使用spring boot
以下是我现在的看法/做法:

  • 用户打开fronend并导航到登录页面
  • 有一个通过facebook授权的链接。看来 实际上应该指向后端/login/facebook url,但是 不会对公众可见,因此我向FE添加了一个代理 将FE登录url转换为引擎盖下的BE登录url。是吗 对吗
  • 一旦后端登录端点命中-它会将用户重定向到授权服务器,用户在该服务器上授权我的应用程序,并应使用令牌将用户重定向到重定向url,对吗
  • 在我的例子中,重定向url应该是一个FE页面,因为后端对公众不可见。看起来我在FE端得到了令牌,应该将令牌放入每个FE->BE请求中。这是它应该如何工作的方式吗
  • 重定向到FE也会导致单页应用程序重新加载自身,我认为没有办法避免这种情况
  • 最后一个问题是:如果用户没有经过身份验证并导航到url,比如说,/myapp/order?id=1,我希望向用户显示登录对话框,一旦授权,我希望用户重定向回/myapp/order?id=1。可能吗

  • 我知道存在客户端流,但我不想对客户端保密(hello reverse engineering),这就是创建服务器流的目的。

    同样的问题,希望有人能解决。