客户端尚未被授予范围:读取角色
Client has not been granted scopes: read roles
使用 node-auth0 包,连接正常工作,但我现在正在尝试对角色进行一些处理并添加了 read:roles
范围,这现在会导致错误。
下面的最小代码:
const ManagementClient = require('auth0').ManagementClient;
const auth0 = new ManagementClient(
{
domain: process.env.AUTH0_DOMAIN,
clientId: process.env.AUTH0_CLIENT_ID,
clientSecret: process.env.AUTH0_CLIENT_SECRET,
scope: 'read:users update:users read:roles'
});
// both these calls fail
const auth0_roles = auth0.roles.getAll();
const auth0_tester = auth0.users.create(data);
现在调用 roles
或 users
失败并出现此错误:
{"error":"access_denied","error_description":"Client has not been granted scopes: read:roles"}
如果我从 scope
中删除 read:roles
,创建用户调用成功(但显然 roles.getAll
失败)
我已经在控制面板中检查了我的 API 权限(APIs
=> Auth0 Management API
=> Permissions
),它似乎包含了所有内容:
(注意:权限顶部有一条消息表明 重要提示:权限管理不适用于代表 Auth0 资源的 APIs。 - 我我无法更改权限)
您无法更改管理 API 资源的 add/edit/remove 权限,因为正如仪表板消息所述:它是一个 Auth0 资源服务器,identifier/audience 为 https://YOUR_DOMAIN.REGION.auth0.com/api/v2/
。范围由 Auth0 管理。但是,您可以修改授予 Server-side 客户端的范围,即 Machine-to-Machine 或 Web 应用程序客户端类型,并限制他们在使用 Client Credentials 授权为 API。
在管理 API 资源设置下的同一部分,除了 "Permissions" 选项卡,您可以打开 "Machine to Machine Applications" 选项卡,找到您的 clientID 并确保它有权请求该 API 资源所需的范围(例如 read:roles
范围)。这些称为客户资助,您可以从仪表板或管理中管理它们 API:https://auth0.com/docs/api/management/v2#!/Client_Grants/get_client_grants
Auth0 有一个 Client Credential Hook,您可以在流程中利用它来实现更具体的逻辑,请在此处阅读更多信息:https://auth0.com/docs/api-auth/tutorials/client-credentials/customize-with-hooks
根据我对 的评论,我实际上已经多次进入 Auth0 仪表板的那个区域并且错过了魔法 link。
下图显示了您必须单击的位置才能设置您希望应用程序拥有的客户端授权。
使用 node-auth0 包,连接正常工作,但我现在正在尝试对角色进行一些处理并添加了 read:roles
范围,这现在会导致错误。
下面的最小代码:
const ManagementClient = require('auth0').ManagementClient;
const auth0 = new ManagementClient(
{
domain: process.env.AUTH0_DOMAIN,
clientId: process.env.AUTH0_CLIENT_ID,
clientSecret: process.env.AUTH0_CLIENT_SECRET,
scope: 'read:users update:users read:roles'
});
// both these calls fail
const auth0_roles = auth0.roles.getAll();
const auth0_tester = auth0.users.create(data);
现在调用 roles
或 users
失败并出现此错误:
{"error":"access_denied","error_description":"Client has not been granted scopes: read:roles"}
如果我从 scope
中删除 read:roles
,创建用户调用成功(但显然 roles.getAll
失败)
我已经在控制面板中检查了我的 API 权限(APIs
=> Auth0 Management API
=> Permissions
),它似乎包含了所有内容:
(注意:权限顶部有一条消息表明 重要提示:权限管理不适用于代表 Auth0 资源的 APIs。 - 我我无法更改权限)
您无法更改管理 API 资源的 add/edit/remove 权限,因为正如仪表板消息所述:它是一个 Auth0 资源服务器,identifier/audience 为 https://YOUR_DOMAIN.REGION.auth0.com/api/v2/
。范围由 Auth0 管理。但是,您可以修改授予 Server-side 客户端的范围,即 Machine-to-Machine 或 Web 应用程序客户端类型,并限制他们在使用 Client Credentials 授权为 API。
在管理 API 资源设置下的同一部分,除了 "Permissions" 选项卡,您可以打开 "Machine to Machine Applications" 选项卡,找到您的 clientID 并确保它有权请求该 API 资源所需的范围(例如 read:roles
范围)。这些称为客户资助,您可以从仪表板或管理中管理它们 API:https://auth0.com/docs/api/management/v2#!/Client_Grants/get_client_grants
Auth0 有一个 Client Credential Hook,您可以在流程中利用它来实现更具体的逻辑,请在此处阅读更多信息:https://auth0.com/docs/api-auth/tutorials/client-credentials/customize-with-hooks
根据我对
下图显示了您必须单击的位置才能设置您希望应用程序拥有的客户端授权。