【问题标题】:How to get the user_id field in Auth0 Hooks?如何获取 Auth0 Hooks 中的 user_id 字段?
【发布时间】:2018-08-07 18:07:15
【问题描述】:

我正在尝试 Auth0 中的一些新 Hook 功能,特别是注册后挂钩。我希望使用user_id 配置文件字段,即provider|id,如here 所述,因此我们可以在应用程序端创建用户记录。我们会为我们的用户分配 UUID,但每个用户都有一个来自 Auth0 的唯一密钥。

钩子示例如下所示 - 我正在导出可供我使用的整个数据集:

module.exports = function (user, context, cb) {
  var request = require('request');
  request({
    method: 'POST', 
    url: 'https://requestb.in/1ejaxvz1',
    body: {
     "id": user.id,
     "user": user,
     "context": context
    },
    json: true
  },
  function(error, response, body) { 
    console.log(user);
    console.log(context);
    cb(error, response) 
  });
};

然而,虽然这给了我用户的基本 ID,但似乎没有关于完整 user_id 的信息或关于 provider 的任何信息可用于钩子。换句话说,与其给我看起来像provider|12345678 的完整ID,我只得到12345678。当我从 Auth0 获取 jwt 时,sub 值返回为provider|12345678

所以我的问题有两个部分: 1) 这个完整的用户 ID 是出于某种原因而有意遗漏,还是设计疏忽?在撰写本文时,此功能仍处于测试阶段。

2) 如果没有完整的用户 ID provider|12345678,我无法对 jwt 中的 sub 值进行完全匹配。但是,我可以尝试通过删除 provider 来进行部分匹配。不过,我不清楚这是否是一种有效的做法。我怀疑不是,但这很难测试。

【问题讨论】:

    标签: auth0 openid-connect


    【解决方案1】:

    Post-registration hook 仅在数据库注册时运行,user_id 格式在输入数据库时​​将始终以 auth0| 为前缀。然而,这可能会在未来发生变化。

    1) 这个完整的用户 ID 是出于某种原因而有意遗漏,还是设计疏忽?在撰写本文时,此功能仍处于测试阶段。

    这是设计使然,但我同意更好的方法是在包括提供程序在内的挂钩中公开完整的user_id

    2) 如果没有完整的用户 ID 提供程序|12345678,我无法对 jwt 中的子值进行完全匹配。但是,我可以尝试通过删除提供者来进行部分匹配。不过,我不清楚这是否是一种有效的做法。我怀疑不是,但这很难测试。

    是的,您必须在 user_id 前面加上 auth0| 才能获得完全匹配。同样,这不是最佳实践,但 Hooks 仍处于测试阶段。

    【讨论】:

    • 您的解决方法对我来说听起来不错。由于 post-reg 挂钩仅用于数据库注册,因此硬编码 auth0 听起来非常安全。这是我最担心的事情。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2018-03-01
    • 2022-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-23
    • 2018-06-30
    • 1970-01-01
    相关资源
    最近更新 更多