使用JWT认证第三方的索赔

使用JWT认证第三方的索赔,jwt,cloud,bearer-token,jwt-auth,Jwt,Cloud,Bearer Token,Jwt Auth,我们设计了一个工作流,使第三方系统(1)能够在不需要额外身份验证的情况下使用我们的(2),如下所示: 以下是描述: 第三方客户端应用程序(web)希望启动我们的应用程序。它向自己的后端请求令牌 第三方后端生成一个带有随机令牌值的JWT,该值与当前用户关联 第三方后端通过特定的API将JWT发送到我们的系统 注册后,JWT被发送回第三方客户端应用程序(web) 第三方应用程序通过JWT启动我们的客户端应用程序(web) 我们的应用程序使用注册的JWT调用后端API 问题如下: 如果此工作流有效

我们设计了一个工作流,使第三方系统(1)能够在不需要额外身份验证的情况下使用我们的(2),如下所示:

以下是描述:

  • 第三方客户端应用程序(web)希望启动我们的应用程序。它向自己的后端请求令牌

  • 第三方后端生成一个带有随机令牌值的JWT,该值与当前用户关联

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

  • 注册后,JWT被发送回第三方客户端应用程序(web)

  • 第三方应用程序通过JWT启动我们的客户端应用程序(web)

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

  • 问题如下:

    • 如果此工作流有效/正常
    • 在JWT中,用户电子邮件、组织id和令牌的正确声明是什么
      • 被认为是JWT标准索赔的来源。如果您的名称未列出,则可以是任何名称,但您可能希望通过增加名称空间来最大限度地减少潜在冲突

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

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

        如果您选择了该选项,流程可以如下所示:

      • 第三方客户端应用程序(web)希望启动我们的应用程序。它向自己的后端请求令牌
      • 第三方后端使用正确的
        颁发者
        受众
        生成JWT,并使用其私钥签名
      • 第三方后端将签名的JWT返回给客户端
      • 第三方应用程序通过JWT启动我们的客户端应用程序(web)
      • 我们的应用程序使用注册的JWT调用后端API(后端将使用令牌颁发者和第三方公钥验证令牌签名)
      • 验证是非常重要的,所以大多数库将以最少的配置为您处理此问题。
        只需注意已知的JWT/JWT验证问题,并从您的角度缓解它们。

        JWT令牌是带有哈希的纯json。因此,我再次建议,作为JWT的一部分,我更喜欢使用代表用户的UUID。此外,我建议您为每个第三方使用不同的密钥。所以,您和第三方生成的令牌应该有不同的散列,并且您还需要有一个字段,说明哪个客户机生成了JWT以进行区分。Rest您的体系结构看起来和suchHi@timur一样好,您的出发点不正确:它不是我们的用户。整个目的是使第三方能够为其用户启动我们的应用程序,而无需登录我们的系统。至少不是通过前端,对。所以你足够信任第三方授权给你的任何用户?在这种情况下,可能让第三方生成一份带有所需声明的签名jwt(作为观众),并验证它是否来自上述第三方?一旦我进入一台合适的计算机,我会更新答案。是的,这是一个B2B连接(根据协议)。我们可以验证它是否来自某个特定的安全服务器。谢谢