将 userId(来自 JWT)与 Google OAuth 令牌关联的最佳实践

问题描述 投票:0回答:1

我有一些关于假设环境中的 OAuth 流程的问题。让我们想象一下以下情况:我们有一个 JavaScript 客户端(React JS)、一个 Keycloak 服务器和一个 REST API(Spring Boot)。我们使用 Keycloak 通过 JWT 来识别用户。经过身份验证后,我们希望为用户提供将其 Google 日历链接到其帐户的能力。因此,有必要将用户 ID(存在于 Keycloak JWT 主题中)与 Google 访问令牌相关联。

除了使用 Google API 的“state”参数之外,我很难找到实现这种关联的最佳方法。下面是代表我设想的流程的序列图。

您能否确认此流程是否遵循最佳实践?它安全且通用吗?还有其他方法可以实现这种关联吗?

提前感谢您的帮助和建议。

sequence diagram

oauth-2.0 jwt google-oauth keycloak openid-connect
1个回答
0
投票

更标准的选项是始终通过 Keycloak 管理身份验证,并将其配置为使用这些用户通过 Google 登录:

  • 您的 JS 客户端运行代码流到 Keycloak

  • Keycloak 为您运行第二个到 Google 的代码流,并包含日历范围

登录完成后,Keycloak 应该能够使用

embedded token
方法:

  • Keycloak 访问令牌包括 Google 访问令牌作为自定义声明

然后,您的 JS 客户端使用访问令牌调用您的 API。您的 API 可以获取内部令牌并使用它调用 Google API(CORS 限制将阻止 JS 客户端直接调用 Google API)。

我还没有用 Keycloak 端到端验证这一点,但这是一种目标模式。授权服务器(如 Keycloak)可以管理应用程序的许多连接,这有助于降低复杂性。

© www.soinside.com 2019 - 2024. All rights reserved.