【问题标题】:auth0 is not returning roles informationauth0 没有返回角色信息
【发布时间】:2017-05-18 19:57:59
【问题描述】:

我正在使用 auth0 进行身份验证。我想获取所有用户,包括他们的角色。我在 auth0 中生成了令牌,当我尝试在 Postman 或 fiddler 工具中执行它时,有时它会提供角色,有时不会。同样的事情也发生在应用程序中。

如果我在角色属性的应用元数据中手动添加如下,那么信息来了。

{
  "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 中的缓存,如果是,那么如何?

【问题讨论】:

    标签: asp.net authentication auth0


    【解决方案1】:

    根据您提供的信息,您似乎正在使用Auth0 Authorization extension 配置用户角色信息。

    如果是这种情况,您应该注意到扩展逻辑在登录时由means of a rule 运行。当您安装了该扩展程序时,您还应该有一个伴随规则;在我的帐户中,该规则被命名为 auth0-authz 并且对于您的情况应该是相同的,假设版本为 2.0 的扩展。

    这样做的影响是角色在登录时出现在用户级别,因此下次用户登录时将看到对配置角色的任何更改。

    注意:由于此逻辑是规则的一部分,它只会在登录的上下文中执行。如果用户被添加到组或从组中删除,这只会在该用户再次登录后反映在 Auth0 中(例如:在用户的 app_metadata 中或在调用 /userinfo 端点时)。

    您直接通过 Auth0 管理 API 查询用户,这可能会导致当前存储在用户个人资料中的角色不是最新的。如果您看到过时的信息,那么这可能是原因。


    另一方面,如果您的问题不完全是这个问题,请提供更多信息并尽可能提供重现步骤。例如,角色信息是否显示给一个用户而不显示另一个用户,或者它是否在一个响应中显示给用户 A,但是如果您发出另一个请求,则响应不包含同一用户 A 的角色信息?

    【讨论】:

    • 我也面临同样的问题。我已经很好地配置了 Auth0 授权扩展,因此我可以在用户的​​ /userInfo 管理 API 中看到 roles,但无法在登录后收到的令牌中找到角色属性。我还将范围字符串设置为scope: 'openid email roles'
    • 供您参考,我使用RS256 算法来加密令牌,但我认为这不重要。
    【解决方案2】:

    我没有使用授权扩展,而是使用标准角色。所以我不得不创建以下规则。 更多信息在这里: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);```
    
    
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-07-30
      • 2023-03-15
      • 2019-12-05
      • 2023-01-25
      • 2020-03-28
      • 2017-06-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多