【发布时间】:2017-03-06 13:21:01
【问题描述】:
我正在关注教程Spring Boot and OAuth2。 当前端和后端位于不同的服务器上时,我需要对基于服务器的 OAuth2 流程有所了解。
根据教程后端提供 /login/facebook 端点,该端点本质上重定向到 facebook 并在授权后 - 返回重定向 url。当前端是后端部署的一部分时,它可以正常工作。但是,当我将前端和后端拆分到不同的应用程序时,我遇到了一些问题,需要深入了解如何正确地做事。
- 假设 FE 是 localhost:3000 和 my-super-duper-site.com
- 假设 BE 是 localhost:8080 并且对公众不可见
- 假设 FE 使用 angular2,BE 使用 spring boot
这是我现在看到/完成的方式:
- 用户打开前端并导航到那里的登录页面
- 有一个通过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。有可能吗?
我知道有客户端流,但我不想对客户端保密(你好逆向工程),这就是创建服务器流的目的。
【问题讨论】:
-
同样的问题,希望有人解决。
标签: angular oauth-2.0 authorization single-sign-on spring-security-oauth2