什么是不透明令牌?

slo*_*zki 31 oauth token oauth-2.0 jwt

它们处于“专有格式”是什么意思?我正在阅读有关 JWT 刷新令牌的信息,它们是不透明的令牌,但我不理解该术语。

jps*_*jps 49

一个JWT有可读的内容,因为你可以看到例如在https://jwt.io/。每个人都可以解码令牌并读取其中的信息。该格式记录在RFC 7519 中。

一个令牌不透明,另一方面具有不打算由你读取的格式。只有发行人知道格式。

这个词的意思已经给出了提示:

opaque /?(?)?pe?k/ 形容词

看不透;不透明。

这是来自https://auth0.com/docs/tokens的引用:

不透明令牌:专有格式的令牌,通常包含服务器持久存储中信息的某些标识符。要验证不透明的令牌,令牌的接收者需要调用发出令牌的服务器。

根据上面的定义,“不透明的 JWT 刷新令牌”是一个矛盾。这里的实际意思是,在某些 JWT 框架中,只有身份验证令牌是 JWT,但作为刷新令牌,它们使用不透明令牌。

  • @sloneorzeszki 在[解释](https://community.apigee.com/questions/21139/jwt-vs-oauth.html)中,您链接的“不透明令牌”被描述为一个随机字符串,仅用作指向服务器端存储的信息。这种令牌在[此处](https://openiddict.github.io/openiddict-documentation/guide/token-formats.html)被描述为“参考令牌”,而“不透明令牌”可能确实包含加密信息(仅原始发行人可读)。因此,我们应该注意一些略有不同的定义。 (2认同)

Soh*_* Si 7

在这里,术语“不透明”意味着字符串(用作令牌)就像一个引用(在 OOP 中)、或指针(在 C 中)或外键(在关系数据库中)。即您需要一个外部内容来解决它。

简单与复合:

该字符串是一个“简单”字符串,与 JWS 相对,其中是“复合”;它有“内部”部分。

内部与外部:

您可以从中提取有效负载(带有声明等),而无需在此字符串“外部”引用外部服务器或存储。

由于不透明标记是一个简单的字符串,它只是一个引用,因此,自然而然,它的格式完全由发布它的服务器任意确定(因此称为“专有格式”)。令牌字符串是在创建基础(被引用)内容时确定的,即当它与该令牌(作为参考或外键)所引用的内容配对(关联)时。