【问题标题】:In auth0 lock, how to refresh the id_token?在 auth0 锁中,如何刷新 id_token?
【发布时间】:2017-02-03 05:01:10
【问题描述】:

我正在构建一个 cordova 移动应用程序并尝试使用 auth0 lock API。我在使用刷新令牌时遇到问题。我可以在 authResult 中检索刷新令牌,但无法弄清楚如何实际刷新 id_token(我想我可以自己编写 REST 调用)

在 v9 文档中,似乎曾经有一个方法:https://auth0.com/docs/libraries/lock/v9/using-a-refresh-token

lock.getClient().refreshToken(refresh_token, function (err, delegationResult) {
  // Get here the new JWT via delegationResult.id_token
});

但是在 lock v10 中,这种方法似乎不再存在:https://auth0.com/docs/libraries/lock/v10/api

谁能建议是否有办法使用锁定 API 刷新令牌?

【问题讨论】:

  • 你可以初始化一个Auth0.js实例.getClient()方法会返回Lock使用的Auth0js对象,Lock 10我们建议你单独创建一个Auth0.js实例。

标签: auth0


【解决方案1】:

首先,您需要在 HTML 中包含 Auth0 的脚本标记:

 <script src="https://cdn.auth0.com/js/lock/10.8/lock.min.js"></script>

或者,如果你是从 npm 安装的,你可以要求 Auth0:

 var Auth0 = require("auth0-js");

在 V10 中,您创建一个 Auth0 客户端实例(独立于 Auth0Lock 实例),它具有函数 refreshToken()

var auth0 = new Auth0({clientID: YOUR_CLIENT_ID, domain: YOUR_AUTH0_DOMAIN});
...
auth0.refreshToken(refresh_token_here, (err, resp) => {
    // resp: {expires_in: 36000, id_token: "id_token here", token_type: "Bearer"}
}

同样可以通过getDelegationToken()函数实现:

auth0.getDelegationToken({
    client_id: YOUR_CLIENT_ID,
    grant_type: "urn:ietf:params:oauth:grant-type:jwt-bearer",
    refresh_token: refresh_token_here,
    scope: "openid",
    api_type: "auth0"
  }, (err, resp) => {
    // resp: {expires_in: 36000, id_token: "id_token here", token_type: "Bearer"}
  });

【讨论】:

  • 如果您展示如何单独导入 Auth0 将会很有帮助。
  • 如何获取refresh_token的值?
  • @KeesdeKooter 要获取刷新令牌,您需要在发起身份验证请求时包含“offline_access”范围。然后响应将包含一个 refresh_token 值。 Auth0 的文档很好地涵盖了here
猜你喜欢
  • 2019-12-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-01
  • 2017-06-02
  • 2020-07-08
  • 2017-07-25
  • 2017-01-11
相关资源
最近更新 更多