auth0不返回角色信息

时间:2017-01-04 13:44:25

标签: asp.net authentication auth0

我正在使用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中清除缓存,如果是,那么如何?

2 个答案:

答案 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);```