2

我想使用您可以设置给用户的 Auth0 权限作为范围键,以便在我的前端显示一些内容。一个示例 JWT 如下所示:

{
  "iss": "https://xxxxx.eu.auth0.com/",
  "sub": "github|xxxxx",
  "aud": [
    "https://xxxxx.app/api/secret",
    "https://xxxx.eu.auth0.com/userinfo"
  ],
  "iat": 1594843242,
  "exp": 1543243234,
  "azp": "lLKv8g6Z43423423421eJjO4n",
  "scope": "openid profile email",
  "permissions": [
    "admin",
    "read:users"
  ]
}

现在我在我的 nuxt.config.js 中将 scopeKey 添加到我的身份验证配置中

auth: {
    scopeKey: 'permissions',
[...]
}

在我的应用程序中

this.$auth.hasScope('admin')

总是返回假。

我错过了什么还是我做错了什么?不可能,因为它不像正常的“范围”那样是空格分隔的吗?提前致谢!

4

1 回答 1

0

明白了:我的错误想法是 auth 正在查看 JWT 令牌。它不是在登录时从 Auth0 获得的用户信息中查找。这里不包括权限。

但是:您可以包含来自用户的 api 权限,如下所示: https ://community.auth0.com/t/accessing-the-permissions-array-in-the-access-token/27559/10

您只需要截取并创建规则。您还必须创建一个具有某些值的全局配置设置“NAMESPACE”。我从 jwt 拿了我的 iss。现在 ScopeKeys 存储在:

auth: {
    scopeKey: 'NAMESPACEuser_authorization.permissions',

请注意,此规则使用管理 API 并可能导致速率限制。速率限制可以在这里找到:https ://auth0.com/docs/policies/rate-limits

于 2020-07-15T21:51:53.350 回答