我正在使用auth0进行身份验证。我想获取所有用户,包括他们的角色。我在auth0中生成了令牌,当我尝试在Postman或fiddler工具中执行它时,有时候它会给角色而有时却没有。在应用程序中也发生了同样的事情。
如果我在角色属性中手动添加app元数据,如下所示,那么信息即将到来。
{
"authorization": {
"groups": [
"Admins",
"Users"
],
"roles": [
"Admin"
],
"permissions": []
}
}
但我填写,如果我在授权标签中更改,它也应该在这里生效。
以下是我的代码,
var apiUser = new ManagementApiClient("<<Token>>", new Uri("https://<<Domain>>/api/v2"));
IPagedList<User> allUsers = await apiUser.Users.GetAllAsync();
我是否需要在auth0中清除缓存,如果是,那么如何?
答案 0 :(得分:1)
根据您提供的信息,您似乎正在使用Auth0 Authorization extension配置用户角色信息。
如果是这种情况,您应该注意到means of a rule在登录时运行扩展逻辑。当您安装了该扩展程序时,您还应该有一个配套规则;在我的帐户中,规则名为 auth0-authz ,假设扩展版本为2.0,则应该与您的情况相同。
这样做的影响是角色在登录时在用户级别浮出水面,因此下次用户登录时将会看到对已配置角色的任何更改。
注意:由于此逻辑是规则的一部分,因此只能在登录环境中执行。如果用户被添加到组中或从组中删除,则只有在此用户再次登录后才会在Auth0中反映(例如:在用户的app_metadata中或在调用/ userinfo端点时)。
您直接通过Auth0 Management API查询用户,这可能会导致当前存储在用户个人资料中的角色不是最新的。如果您看到陈旧的信息,那么这可能是原因。
另一方面,如果您的问题不正确,请提供进一步的信息以及可能的重现步骤。例如,角色信息是针对一个用户而不是另一个用户显示的,还是在一个响应中针对用户A显示,但是如果您发出另一个请求,则响应不包括该用户A的角色信息?
答案 1 :(得分:0)
我没有使用授权扩展,而是使用标准角色。因此,我必须创建以下规则。 这里的更多信息:http://isbyr.com/return-user-roles-in-auth0/
function (user, context, callback) {
// Get the user roles from the Authorization context
const assignedRoles = (context.authorization || {}).roles;
// Update the user object.
user.rolez = assignedRoles;
callback(null, user, context);```