我已经使用Auth0创建了一个帐户,我正在尝试将Angular 2简单登录到我们的后端API。
我启用了Auth0授权扩展,我已经进入并创建了一个组和一个角色,我已将这些分配给我创建的测试用户,然后我转到配置并发布了令牌内容的规则和持久性。
如何在nodejs app中查看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以查看权限等,如果是这样,我该如何查看?
答案 0 :(得分:0)
对于令牌本身(groups
和roles
声明)中的群组和角色信息可用的情况,并且假设您正在使用express-jwt
,那么您可以通过访问:
req.user.groups
req.user.roles
从本质上讲,express-jwt
会使req.user
对象中的令牌中包含的声明可用。
对于用于标识用户的ID,您可以使用用户令牌的sub
声明中包含的值。此值保证唯一且稳定,因此以完全相同的方式使用身份验证的定期用户在sub
声明中始终具有相同的值。
您已经发现包含组和角色信息的一种方法是通过scope
参数请求它。要求将此信息包含在令牌中并不是一种不好的做法,但是,您需要考虑通过SPA使用的隐式授权提供的令牌作为回调URL的一部分包含在内,因此,他们的最大尺寸受到对URL的限制。
关于第二个问题,您可以通过集成Auth0授权扩展API和Auth0 Management API来实现自己的管理后端;有关详细信息,请参阅以下链接: