【问题标题】:Auth0 - Rules & Groups && User ManagementAuth0 - 规则 & 组 && 用户管理
【发布时间】:2017-05-25 09:01:51
【问题描述】:

我已经使用 Auth0 创建了一个帐户,我正在尝试让 Angular 2 简单地登录到我们的后端 API。

1。我正在尝试做的是能够访问 API 中的角色以查看用户是否具有正确的权限。

我已经启用了 Auth0 授权扩展我已经进入并创建了一个组和一个角色,我已将这些分配给我创建的测试用户,然后我进入配置并发布了令牌内容的规则和持久性。

如何在 nodejs 应用程序中查看 JWT 的权限/组?我正在使用express-jwt 这个:

const authenticate = jwt({
  secret: config.get('AUTH0_CLIENT_SECRET'),
  audience: config.get('AUTH0_CLIENT_ID'),
  credentialsRequired: false,
});

这给了我诸如 iss、sub、aud 之类的详细信息。但是没有关于用户元数据的详细信息,我如何才能检索到这个?另外,由于我之前显然没有使用过 Auth0,最好的做法是将用户详细信息存储在我们自己的数据库中,这样我就可以使用自己的 ID 来存储用户操作,或者如果 Auth0 给出一个 ID,是否可以使用 ID在我们的数据库中存储用户操作。

编辑 1

好的,我可以看到 Lock 有一个选项参数,您可以在其中传递作用域,登录时请求这些参数是不是不好的做法?现在只有少数组/角色。或者更好的是 API 可以使用提供的令牌来查找用户以获取 app_metadata 以查看权限等,如果可以,我该如何查找?


2。我如何管理和查看用户,以便在我们自己的管理面板中显示他们并管理他们拥有的权限。

【问题讨论】:

    标签: node.js express jwt auth0 express-jwt


    【解决方案1】:

    如果组和角色信息在令牌本身中可用(如groupsroles 声明)并且假设您使用的是express-jwt,那么您可以在服务器端访问此信息通过访问:

    req.user.groups
    req.user.roles
    

    实质上,express-jwt 将使令牌中包含的声明在 req.user 对象中可用。

    关于您用于识别用户的 ID,您可以使用用户令牌的 sub 声明中包含的值。此值保证是唯一且稳定的,因此以完全相同的方式使用身份验证的重复用户将始终在 sub 声明中具有相同的值。

    您已经发现包含组和角色信息的一种方法是通过scope 参数请求它。请求将此信息包含在令牌中并不是一个坏习惯,但是,您需要考虑到通过 SPA 使用的隐式授权传递的令牌包含在回调 URL 的一部分中,因此它们的最大值大小受到 URL 的限制。


    关于您的第二个问题,您可以通过集成 Auth0 授权扩展 API 和 Auth0 管理 API 来实现自己的管理后端;有关详细信息,请参阅以下链接:

    【讨论】:

    • 关于第一部分,你说我需要考虑SPA使用的隐式授权。我是这种 auth0/oauth 用户身份验证方式的新手,您介意再解释一下吗?有没有另一种方法,目前 Angular2 应用程序使用 auth0 锁,然后使用 JWT 向 API 发送请求,我应该通过 API 登录并且 API 向 auth0 发送请求吗?使用 auth0 iss 存储在我们的数据库中是一种好习惯,还是最好在我们端复制用户以匹配用户?谢谢
    • 通过隐式授权,令牌作为重定向 URL 的一部分返回,类似于 https://[yourdomain]/callback#[token_param_name]=[token_value]。在前面的示例中,URL 的长度主要取决于 [token_value] 的内容,因此如果您要求令牌中包含大量信息,您需要考虑它是否会导致 URL 大小出现问题。您可以将 Auth0 用户标识符 sub 声明存储在您的数据库中,因为它唯一地标识了用户。
    • 谢谢。我正在运行 Angular 2 Auth0 演示,但看不到回调的设置位置或方式。是否有隐式授权的替代方案,或者是最简单的解决方案。您知道可能使 URL 变大的内容限制是什么吗?谢谢
    • 如果您使用的是 Auth0.js 或 Lock,如果您没有明确执行,他们会为您设置回调。查看SO question 了解有关 URL 限制的信息。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-06-05
    • 2020-06-29
    • 2017-09-22
    • 2018-07-03
    • 1970-01-01
    • 2017-02-16
    • 2020-10-08
    相关资源
    最近更新 更多