使用自己的 oauth2 实现时,使用 oAuth2 安全服务器连接到第三方 rest api

Connect to 3rd party rest api with oAuth2 security server when using own oauth2 implementing

我正在尝试寻找一些最佳实践来解决我的问题。

我有一个使用 oauth2 和 firebase 进行身份验证和授权的微服务应用程序。 我们的应用程序需要连接到第 3 方 rest api,它也受 oauth2 保护。

是否可以整合这两种实现方式,或者我是否需要制定自己的解决方案?

我的一位同事实施了访问 api 所需的授权代码流程,我们基本上将访问权限和 refresh_tokens 存储在数据库中以访问此第 3 方 api .但是感觉不对,我也找不到任何最佳实践,谁能帮帮我?

您的 co-worker 实现的非常典型:将您自己的应用程序(您使用 Firebase 管理)的身份验证和授权与授权您使用第 3 方的用户分开 API。

以下是您在实施 OAuth 流程时应遵循的一些最佳做法:

  • 使用state参数避免CSRF攻击。将其存储在您的数据库中,并将回调 state 与您为用户随机生成的回调
  • 进行比较
  • 加密访问和刷新令牌。刷新令牌特别提供 long-lived 访问权限
  • 确认您请求的 scope 是返回的 scope:一些供应商允许用户调整权限,这可能会导致意外错误
  • 确保您的刷新令牌不会过期。查看提供商的文档以了解刷新令牌是如何取消授权的。有些是 time-based,有些是基于发布的新刷新令牌,但无论如何,请确保您的刷新令牌保持有效,如果不是,您必须让用户 re-authorize 您的应用程序

您还可以使用托管的 OAuth 提供程序来抽象化所有这些元素。 Xkit,我的工作,与 Firebase 身份验证集成,因此您的用户可以授权您的应用程序,并且您可以通过一个 API 调用检索每个用户的令牌。