0

我已经使用 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. 我如何管理和查看用户,以便在我们自己的管理面板中显示他们并管理他们拥有的权限。

4

1 回答 1

0

对于组和角色信息在令牌本身(如groupsroles声明)中可用并且鉴于您正在使用express-jwt的情况,您可以通过以下方式在服务器端访问此信息:

req.user.groups
req.user.roles

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

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

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


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

于 2017-01-11T10:37:39.920 回答