【问题标题】:Generic OAuth clients integrations通用 OAuth 客户端集成
【发布时间】:2016-10-07 16:26:50
【问题描述】:
我有一个产品,它调用多个第三方 rest api 来获取某些数据。
有多个供应商 api 需要 oAuth 支持。他们可以授予我帐户和客户端以访问他们的 api,但我的服务需要使用这些帐户和他们的 CI 生成令牌。
如何构建一个通用框架来支持多个供应商 CI。
我认为这有点复杂,因为有些供应商使用 oAuth1 ,有些使用 oAuth 2 ..
是否有任何现有的解决方案?
如何处理令牌刷新?
例如:
一个供应商可以是 google 使用 google CI
其他供应商可以是 Facebook 使用他们的 CI。
【问题讨论】:
标签:
oauth
oauth-2.0
google-oauth
【解决方案1】:
Facebook 和 Google 的工作流程几乎相同,因此后端(以及前端,在某种程度上)绝对可以以通用方式设计:
-
仅为为实际的客户端应用程序设置客户端 ID(因此为
Authorized JavaScript origins),而不是为后端设置。
- 将每个客户端与每个 OAuth 提供者集成
- 通过通用抽象模型向后端/API 发送数据(提供者令牌)
- 在服务器端验证令牌(每个提供程序的执行方式不同,但您可以有一个 IProviderAuthValidator 和多个实现)
- 创建帐户/登录等
因此,唯一特殊的位应该是这 2 个:
- 获取提供者令牌客户端
- 验证所述令牌服务器端