首页 > 解决方案 > 使用 JWT 对 3rd 方进行身份验证的声明

问题描述

我们设计了一个工作流程,使第 3 方系统 (1) 无需额外身份验证即可使用我们的 (2),如下所示:

智威汤逊工作流

这是描述:

  1. 第 3 方客户端应用程序 (web) 想要启动我们的应用程序。它向自己的后端请求令牌。

  2. 第 3 方后端生成一个带有随机令牌值的 JWT,与当前用户相关联

  3. 第 3 方后端通过特定 API 将 JWT 发送到我们的系统

  4. 注册后,JWT 被发送回第 3 方客户端应用程序(Web)

  5. 第 3 方应用程序通过 JWT 启动我们的客户端应用程序(Web)

  6. 我们的应用程序使用注册的 JWT 调用我们的后端 API

问题如下:

标签: jwtcloudbearer-tokenjwt-auth

解决方案


IANA 令牌声明注册表应该是标准 JWT 声明的来源。如果您的未列出 - 它可以是任何东西,但您可能希望尽量减少与额外命名空间的潜在冲突。

UPD 看来我误解了这个问题,您宁愿为已获得第 3 方授权的用户提供 API。我删除了现在似乎无关紧要的 oAuth 部分

正如我在评论中建议的那样,JWT 带有一个签名,您的后端可以使用第 3 方的公钥对其进行验证。通过这种方式,您可以消除几个额外的 API 调用来设置所有内容。

如果你选择了,流程可以是这样的:

  1. 第 3 方客户端应用程序 (web) 想要启动我们的应用程序。它向自己的后端请求令牌。
  2. 第 3 方后端生成具有正确issueraudience其他必需声明的 JWT,并使用其私钥对其进行签名
  3. 第 3 方后端将签名的 JWT 返回给客户端
  4. 第 3 方应用程序通过 JWT 启动我们的客户端应用程序(Web)
  5. 我们的应用程序使用注册的 JWT 调用我们的后端 API(后端将使用令牌颁发者和第 3 方公钥验证令牌签名)。

验证是标准的一部分,因此大多数库将以最少的配置为您处理此问题。请注意已知的 JWT/JWT 验证问题并在您身边缓解它们。


推荐阅读