【问题标题】:How do I get a refresh token from auth0 passwordless using lock v11?如何使用 lock v11 从 auth0 无密码获取刷新令牌?
【发布时间】:2019-04-01 06:26:21
【问题描述】:

我有一个老式的 angularJs 应用程序,它有两个页面。在这两个页面上,我都包含了 auth0 锁定脚本。

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

在这两个页面中,一个具有以下 js,指定了一个 auth0 锁以允许用户登录:

new Auth0LockPasswordless(configuration.id,configuration.domain,
{
    allowedConnections: ['email'],
    passwordlessMethod: "link",
    auth: {
        redirectUrl: configuration.redirectUrl,
        responseType: 'token id_token',
        params: {
            scope: 'openid profile email offline_access'
        }
    }
}).show();

其他页面负责在他们单击电子邮件中的链接后进行回叫。

var lock = new Auth0LockPasswordless(configuration.id, configuration.domain);

lock.on('authorization_error',
    function(authResult) {
        console.log("DEBUG::AUTHRESULT::", authResult);
});

lock.on('authenticated',
    function(authResult) {
        console.log("DEBUG::AUTHRESULT::", authResult);
});

现在我在请求的范围内设置了offline_access,并且在我的本地环境中,在进行身份验证时被提示提供额外的权限(所以它通过了)。但是,当我检查来自lock.on('authenticated', function(authResult).. 的日志时,refreshToken 始终为空。

网络上有一些相互矛盾的文档,其中包含关于 lock 将返回刷新令牌和不会返回刷新令牌的建议。是否有人能够确认此代码是否应生成有效的 refreshToken?

【问题讨论】:

  • 你好 Lucas,看起来即使使用无密码身份验证也可以获得刷新令牌。我做了一些搜索,发现您可能会因为您的规则设置方式而遇到问题。你能确认一下吗?
  • @NathanielFredericks,我确实有一些自定义规则。其中没有一个引用刷新令牌。究竟是什么规则会导致这个问题?
  • 你的grant_type是什么?应该是refresh_token
  • 据我所知,您没有在无密码锁定设置上设置grant_type。我将它作为测试添加到auth.params.grant_type: 'refresh_token'。但是 auth0 响应仍然有一个 null refreshToken。
  • 如果是客户端网络应用,我认为你不应该使用offline_access或刷新令牌,而是实现静默登录。刷新令牌永远不应该发送到浏览器。 auth0.com/docs/tokens/refresh-token/current

标签: javascript auth0 auth0-lock


【解决方案1】:

正如@user44 上面在 cmets 中所说,您不应该在 SPA(单页应用程序)中使用刷新令牌,因为它不是安全的客户端和安全存储它的方式。相反,请使用 静默身份验证 方法来请求新的访问令牌。

https://auth0.com/docs/api-auth/tutorials/silent-authentication

取决于您使用的 SDK,auth0-spa-js 或 auth0.js:

(免责声明:我在 Auth0 担任高级解决方案工程师)


更新(2020 年 5 月 7 日):

需要注意的是Auth0最近引入了Refresh Token Rotationhttps://auth0.com/docs/tokens/concepts/refresh-token-rotation,Auth0 SPA SDK也支持这个功能

【讨论】:

    猜你喜欢
    • 2019-02-25
    • 2021-06-12
    • 2017-03-28
    • 2017-05-02
    • 2020-01-14
    • 2017-12-28
    • 1970-01-01
    • 2017-03-10
    • 2019-10-26
    相关资源
    最近更新 更多