【发布时间】:2020-03-28 05:11:39
【问题描述】:
它们采用“专有格式”是什么意思?我正在阅读有关 JWT 刷新令牌的信息,它们是不透明的令牌,但我不明白这个术语。
【问题讨论】:
它们采用“专有格式”是什么意思?我正在阅读有关 JWT 刷新令牌的信息,它们是不透明的令牌,但我不明白这个术语。
【问题讨论】:
JWT 具有可读内容,例如您可以在 https://jwt.io/ 上看到。 每个人都可以解码令牌并读取其中的信息。格式记录在RFC 7519。
另一方面,不透明标记的格式不适合您阅读。只有发行人知道格式。
这个词的意思已经给出了提示:
不透明 /ə(ʊ)ˈpeɪk/ 形容词
无法被看穿;不透明。
这是来自https://auth0.com/docs/tokens的引述:
不透明令牌:专有格式的令牌,通常包含服务器持久存储中信息的某些标识符。要验证不透明的令牌,令牌的接收者需要调用颁发令牌的服务器。
根据上面的定义,“不透明的 JWT 刷新令牌”是矛盾的。这里的实际意思是,在某些 JWT 框架中,只有身份验证令牌是 JWT,但作为刷新令牌,它们使用不透明令牌。
【讨论】:
opaque token 被描述为一个随机字符串,仅用作指向服务器端存储信息的指针。这种令牌被描述为here 为reference token,而opaque token 可能确实包含加密信息(仅对原始发行者可读)。因此,我们应该注意的定义略有不同。
在这里,术语“不透明”意味着字符串(用作标记)类似于引用(在 OOP 中)、指针(在 C 中)或外键(在关系数据库中)。 即您需要一个外部内容来解决它。
简单与复合:
字符串是一个“简单”字符串,与 JWS 不同,其中是“复合”;它“内部”有部分。
内部与外部:
您可以从中提取有效负载(带有声明等),而无需引用外部服务器或存储,“外部”此字符串。
由于不透明标记是一个简单的字符串,它只是一个参考,因此,它的格式自然完全由发出它的服务器任意确定(因此称为“专有格式”)。令牌字符串在创建基础(引用)内容时确定,即当它与此令牌(作为引用或外键)引用的内容配对(关联)时。
【讨论】:
access_token 和/或id_token,对吗?知道refresh_token 通常可以消除tokens 的安全性。相关:auth0.com/docs/tokens/refresh-tokens/use-refresh-tokens
access_token 和 id_token 几乎可以是一切,但现在,两者 通常是JWT。