使用自己的 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 调用检索每个用户的令牌。
我正在尝试寻找一些最佳实践来解决我的问题。
我有一个使用 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 调用检索每个用户的令牌。