可能OAuth 2.0访问令牌是JWT吗?

从我所知道的情况来看,OAuth 2.0规范在access token形式方面非常模糊:

令牌可以表示用于检索授权信息的标识符或者可以以可验证的方式(即,由一些数据和签名组成的令牌串)自我包含授权信息。 为了使客户端使用令牌,可能需要额外的身份验证凭证,这超出了本规范的范围。

访问令牌提供了一个抽象层,用资源服务器理解的单个令牌替换不同的授权结构(例如,用户名和密码)。 这种抽象使发出的访问令牌比用于获取授权的授权更具限制性,同时也消除了资源服务器对理解各种认证方法的需求。

基于资源服务器安全要求访问令牌可以具有不同的格式,结构和使用方法(例如,加密属性)。 访问令牌属性和用于访问受保护资源的方法超出了本规范的范围,并且由相关规范(如RFC6750)定义。

(强调加)

链接的RFC6750没有提供更多的特殊性。 有一个示例HTTP响应正文显示:

{
       "access_token":"mF_9.B5f-4.1JqM",
       "token_type":"Bearer",
       "expires_in":3600,
       "refresh_token":"tGzv3JOkF0XG5Qx2TlKWIA"
     }

这似乎表明access_token可以是不透明的ASCII文本,例如编码的JSON Web令牌(JWT)

从我的角度来看,JWT-as-access_token似乎具有一些理想的特性:

  • 这是一个已知的规范,相当广泛的采用和客户端库以许多语言提供。

  • 它允许使用经过审查的加密库进行简单的签名和验证。

  • 因为它可以解码为JSON,所以它可以让我们在令牌本身中包含关于令牌的元数据和信息。

  • 我的问题是:首先,访问令牌是否可以成为智威汤逊? 其次,如果根据规范允许,是否有任何其他考虑因素会使得使用JWT作为访问令牌是一个坏主意?


    A1:使用JWT作为访问令牌肯定是允许的,因为规范并没有限制它的格式。

    A2:使用JWT作为访问令牌的想法是,它可以自包含,以便目标可以验证访问令牌并使用关联的内容,而无需返回授权服务器。 这是一个伟大的财产,但使撤销更难。 因此,如果您的系统需要立即撤销访问权限,则JWT可能不是访问令牌的正确选择(尽管通过缩短JWT的使用期限可以获得相当大的回报)。


    只要授权服务器和资源服务器就访问令牌的含义达成一致,无论其内容是什么。 因此,如果您在实现这两台服务器时使用不同的库或框架,您可能会遇到问题的唯一原因。

    链接地址: http://www.djcxy.com/p/8415.html

    上一篇: May an OAuth 2.0 access token be a JWT?

    下一篇: How to persist OAuth 2 refresh tokens