声称通过JWT对第三方进行身份验证

时间:2020-01-15 02:55:00

标签: jwt cloud bearer-token jwt-auth

我们设计了一种工作流程,使第三方系统(1)能够使用我们的(2)系统而无需额外的身份验证,如下所示:

JWT workflow

这里是描述:

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

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

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

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

  5. 第三方应用通过JWT启动我们的客户端应用(网络)

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

问题如下:

  • 如果此工作流程有效/正常
  • 在JWT中对user_email,organization_id,token使用正确的声明是什么

1 个答案:

答案 0 :(得分:1)

IANA Token Claims registry应该是标准JWT声明的来源。如果您的列表未列出-可以是任何东西,但您可能希望通过使用其他命名空间来最大程度地减少潜在冲突。

UPD 似乎我误解了这个问题,而您是为经过第三方授权的用户提供API。我删除了现在似乎无关的oAuth部分

正如我在评论中所建议的那样,JWT带有一个签名,您的后端可以使用第三者的公共密钥来进行验证。这样,您就省去了几个额外的API调用来设置所有内容。

鉴于您的选择,流程如下:

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

验证为part of the standard,因此大多数库将以最少的配置为您处理此问题。 只需了解已知的JWT / JWT验证问题并减轻您的负担即可。