【问题标题】:What is an opaque token?什么是不透明令牌?
【发布时间】:2020-03-28 05:11:39
【问题描述】:

它们采用“专有格式”是什么意思?我正在阅读有关 JWT 刷新令牌的信息,它们是不透明的令牌,但我不明白这个术语。

【问题讨论】:

    标签: oauth oauth-2.0 jwt token


    【解决方案1】:

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

    另一方面,不透明标记的格式不适合您阅读。只有发行人知道格式。

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

    不透明 /ə(ʊ)ˈpeɪk/ 形容词

    无法被看穿;不透明。

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

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

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

    【讨论】:

    • 谢谢。我认为让我感到困惑的是签名部分,它是加密的,因此本身并不是真正可读的。我还在这里找到了一个很好的解释:community.apigee.com/questions/21139/jwt-vs-oauth.html
    • @sloneorzeszki 在您链接的explanation 中,opaque token 被描述为一个随机字符串,仅用作指向服务器端存储信息的指针。这种令牌被描述为herereference token,而opaque token 可能确实包含加密信息(仅对原始发行者可读)。因此,我们应该注意的定义略有不同。
    • 有什么不透明令牌的例子吗?
    【解决方案2】:

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

    简单与复合:

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

    内部与外部:

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

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

    【讨论】:

    • 所以一个不透明的标记实际上甚至可以是一个随机字符串或一个 Id 整数,对吧?换句话说,它是如何生成/创建的?此 ID 可能引用授权服务器数据库中的另一个数据。例如,access_token 和/或id_token,对吗?知道refresh_token 通常可以消除tokens 的安全性。相关:auth0.com/docs/tokens/refresh-tokens/use-refresh-tokens
    • 看来,我在页面上找到了答案:thehftguy.com/2019/01/02/… 换句话说,access_tokenid_token 几乎可以是一切,但现在,两者 通常是JWT
    猜你喜欢
    • 2017-05-08
    • 1970-01-01
    • 2021-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-17
    相关资源
    最近更新 更多