Oauth 有效负载为空的JWT令牌如何工作?

Oauth 有效负载为空的JWT令牌如何工作?,oauth,jwt,Oauth,Jwt,我正在使用Snapchat API尝试使用OAuth流登录应用程序。一旦用户通过Snapchat登录,我将尝试反向工程(因为他们没有这方面的文档)如何为用户获取某种唯一ID,以便我可以将他们与数据库中的本地用户关联。这就是我以前对Facebook这样的东西所做的。用户登录并通过FacebookAPI获取访问令牌,我可以通过FacebookAPI为用户提取某种唯一ID Snapchat API只允许您访问用户的显示名称和一些“externalId”,我不能保证不会更改。所以我解码了Snapchat

我正在使用Snapchat API尝试使用OAuth流登录应用程序。一旦用户通过Snapchat登录,我将尝试反向工程(因为他们没有这方面的文档)如何为用户获取某种唯一ID,以便我可以将他们与数据库中的本地用户关联。这就是我以前对Facebook这样的东西所做的。用户登录并通过FacebookAPI获取访问令牌,我可以通过FacebookAPI为用户提取某种唯一ID

Snapchat API只允许您访问用户的显示名称和一些“externalId”,我不能保证不会更改。所以我解码了Snapchat发给我的JWT令牌,它挑战了我对JWT令牌如何工作的理解。当我在对令牌进行解码时,我看到有效负载是空的,但是在调用端点时令牌仍然有效。snapchat服务器如何识别我是谁?我一直认为,JWT必须包含一个声明,例如识别用户的
sub
。然后服务器可以使用这些信息来知道我是谁

在本例中,我的JWT负载为空,但前面提到的端点仍然返回我的用户数据。这里发生了什么?当我的JWT令牌的负载为空时,服务器如何知道我是谁?对我来说,他们必须在服务器上存储我的JWT令牌的副本,这似乎是使用JWT令牌的错误方式。也许我的理解大错特错了。有什么想法吗?

JWS(签名令牌)的有效负载可以分离并通过其他方式传输给观众

此功能在本规范的第页中进行了描述

在JWS紧凑序列化模式(最常见的格式)下,令牌看起来像\u头、\u负载、\u签名。对于分离的有效负载,除了
有效负载
是一个空字符串:
有效负载头..有效负载签名

签名的验证与附加有效载荷的验证相同。接收器应该已经接收到有效载荷,并且必须重新创建完整输入,即
标题。有效载荷


关于snapshat执行的标识,可以在令牌(令牌的第一部分)的头参数中设置对分离的有效负载的引用,以允许Snapchat完全验证令牌。

我使用的是Postman,并且仅使用我解码的没有有效负载的JWT击中端点。我在HTTP请求中没有发送任何附加信息。我是指令牌的头,而不是请求的头。