【问题标题】:What is the difference between id_token and access_token in Auth0Auth0中的id_token和access_token有什么区别
【发布时间】:2015-10-08 07:27:09
【问题描述】:

在 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 有什么区别?

【问题讨论】:

标签: javascript oauth openid jwt auth0


【解决方案1】:

OpenID Connect 建立在 OAuth2 之上。

  • access_token 可用于调用 Auth0 中的某些 API(例如 /userinfo)或您在 Auth0 中定义的 API。
  • id_tokenJWT,代表已登录的用户。 您的应用程序经常使用它
  • refresh_token(仅供移动/桌面应用程序使用)不会过期(但可撤销),它允许您获得新鲜铸造的access_tokensid_token

【讨论】:

  • A refresh_token (only to be used by a mobile/desktop app) 你能解释一下吗?似乎其他人甚至使用网络应用程序也使用刷新令牌:stackoverflow.com/questions/26739167/…
  • 根据 Auth2.0,刷新令牌确实有过期时间,但它的寿命比 security_token 长得多。 (在 OpenId 中可能不是这样)。刷新令牌也是可选的,由 STS 发送或不发送。但是,在隐式授权中,肯定不会发送,因为它有风险,但在授权代码授权中,它是可选的。
  • 此外,access_token 也可以是 jwt。也可能包含范围!更多详情见:mannharleen.github.io/2020-03-11-id-access-tokens
【解决方案2】:

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

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

刷新令牌的想法是,如果访问令牌被泄露,因为它是短暂的,攻击者有一个有限的窗口来滥用它。刷新令牌,如果被泄露,将毫无用处,因为攻击者除了刷新令牌之外还需要客户端 ID 和密码才能获得访问令牌。 source

刷新令牌的生命周期取决于 (AS) 授权服务器——它们可以过期、被撤销等。刷新令牌和访问令牌之间的区别在于受众:刷新令牌只能返回到授权服务器,访问令牌转到(RS)资源服务器。 source

【讨论】:

  • 喜欢你的回答。我们正在使用 Google 的身份验证和 ID 令牌。因为 ID Token 在 60 分钟后过期,所以每隔一小时让用户登录会很麻烦。但他们不提供自动刷新。有什么建议吗?
猜你喜欢
  • 2017-04-04
  • 2017-12-26
  • 2017-03-24
  • 2022-08-10
  • 2016-05-04
  • 2016-04-22
  • 2018-03-22
  • 2018-05-17
  • 2021-08-17
相关资源
最近更新 更多