首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >单页应用程序: OAuth2授权代码授予

单页应用程序: OAuth2授权代码授予
EN

Stack Overflow用户
提问于 2016-10-24 17:14:55
回答 1查看 866关注 0票数 6

我正在遵循教程Spring和OAuth2。当前端和后端位于不同的服务器上时,我需要对基于服务器的OAuth2流有一些了解。

根据本教程,后端提供/login/facebook端点,它本质上重定向到facebook,并在授权之后返回到重定向url。当前端是后端部署的一部分时,它可以很好地工作。然而,当我将前端和后端分离到不同的应用程序时,我会面临一些问题,并且需要对正确的工作有洞察力。

  • 让我们假设FE是localhost:3000和my-super site.com
  • 让我们假设是localhost:8080,并且对公众不可见
  • 让我们假设FE使用的是angular2,使用的是spring引导

我现在是怎么看/怎么做的:

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

我知道有客户端流,但我不想对客户端保密(你好,逆向工程),这就是创建服务器流的目的。

EN

回答 1

Stack Overflow用户

发布于 2021-07-07 05:26:45

根据您的描述,您似乎已经实现了OAuth来验证您的用户身份。你一定是在facebook上创建了一个OAuth客户端。

OAuth2.0授权代码授予流是这样工作的

代码语言:javascript
运行
复制
 +--------+                               +---------------+
 |        |--(A)- Authorization Request ->|   Resource    |
 |        |                               |     Owner     |
 |        |<-(B)-- Authorization Grant ---|               |
 |        |                               +---------------+
 |        |
 |        |                               +---------------+
 |        |--(C)-- Authorization Grant -->| Authorization |
 |Your BE |                               |     Server    |
 |        |<-(D)----- Access Token -------|   Facebook    |
 | Client |                               +---------------+
 |        |
 |        |                               +---------------+
 |        |--(E)----- Access Token ------>|    Resource   |
 |        |                               |     Server    |
 |        |<-(F)--- Protected Resource ---|               |
 +--------+                               +---------------+

特别是在SPA的客户端->服务器模型的情况下,这是很棘手的。

你是怎么处理的。

  1. 创建OAuth2.0客户端,将重定向uri配置到后端。
  2. 拦截重定向装置。一旦得到令牌,就可以通过SSE发射器将令牌传递给前端服务器,或者轮询特定的端点,检查令牌的可用性。当你找到它时,你会发送回复。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40223932

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档