Auth0中id_token和access_token的区别是什么

时间:2015-07-18 20:00:15

标签: javascript oauth openid jwt auth0

在Auth0中,您可以使用refresh tokens。在此链接中,我们可以看到许多返回的参数:

lock.showSignin({
  authParams: {
    scope: 'openid offline_access'
  }
}, function (err, profile, id_token, access_token, state, refresh_token) {
  // store refresh_token
});

Apparently, access_tokens可用于检索用户个人资料数据。但这似乎是oauth特有的,我认为auth0使用openid?

id_tokenaccess_token之间的区别是什么?

2 个答案:

答案 0 :(得分:25)

OpenID Connect构建于OAuth2之上。

  • access_token可用于调用Auth0中的某些API(例如/userinfo)或您在Auth0中定义的API。
  • id_tokenJWT,代表登录用户。它通常由您的应用使用
  • refresh_token(仅供移动/桌面应用程序使用)不会过期(但可以撤销),并且可以让您获得新鲜的access_tokens和{{1} }。

答案 1 :(得分:3)

资源服务器(您的服务器端应用程序)仅接受来自客户端的访问令牌。这是因为访问令牌旨在用于授权对资源的访问。另一方面, ID令牌旨在用于身份验证。这是由 OpenID 提供程序授予的,该提供程序包含有关最终用户的信息。 source

访问令牌是应用程序用来代表用户发出API请求的东西。访问令牌代表特定应用程序对用户数据特定部分的访问授权。访问令牌必须保持机密。

刷新令牌的想法是,如果访问令牌被破坏(因为它是短暂的),则攻击者可以在有限的范围内滥用它。刷新令牌(如果遭到破坏)是无用的,因为攻击者除了需要刷新令牌之外还需要客户端ID和机密才能获得访问令牌。 source

刷新令牌的生存期取决于(AS)授权服务器-它们可以过期,被吊销,等等。刷新令牌和访问令牌之间的区别在于受众:刷新令牌仅返回到授权服务器,访问令牌将转到(RS)资源服务器。 source