无法使用 clientCredential 流程从 Graph API 请求自定义范围
Cannot request custom scope from Graph API with clientCredential flow
我正在尝试从以下范围 AppRoleAssignment.ReadWrite.All
的图中请求访问令牌。我已经授予 API 所需的范围 - 所以这应该不是问题。
const ccrRequest = {
scopes: ["https://graph.microsoft.com/AppRoleAssignment.ReadWrite.All"],
}
const accessToken = await cca.acquireTokenByClientCredential(ccrRequest)
cca 是 ConfidentialClientApplication
,我已经三重检查我的配置是否正确。
当我尝试获取范围时,出现以下错误:
1002012 - [2021-09-15 12:15:42Z]: AADSTS1002012: The provided value for scope https://graph.microsoft.com/AppRoleAssignment.ReadWrite.All openid profile offline_access is not valid. Client credential flows must have a scope value with /.default suffixed to the resource identifier (application ID URI).\r\n'
显然错误告诉我使用 ./default
范围,(我真的不知道为什么)。但是根据文档,./default
范围应该给了我所有的应用程序范围。然而这并没有发生:
0:'https://graph.microsoft.com/.default'
1:'openid'
2:'profile'
3:'offline_access'
以上是我请求 https://graph.microsoft.com/.default
范围时随访问令牌提供的范围。当然,这并不代表我在门户中授予 API 的权限。
当我执行 fetch()
请求时,出现以下错误:
Insufficient privileges to complete the operation.
关于 ClientCredentials 流程的一些基本知识我在这里遗漏了吗?
您需要转到应用程序注册的API权限选项卡,在Microsoft Graph API上添加您需要的应用程序权限(不是委托权限) ],然后 运行 至少以应用程序管理员身份获得管理员同意。然后您应该能够使用 /.default 范围并在访问令牌的角色声明中获得所需的权限。
Openid、配置文件和 offline_access 范围在客户端凭据方案中没有意义。
没有用户,所以 openid 和配置文件范围什么都不做。
offline_access 范围不是必需的,因为您不需要刷新令牌。您拥有凭据,可以在需要新令牌时使用它们。
我正在尝试从以下范围 AppRoleAssignment.ReadWrite.All
的图中请求访问令牌。我已经授予 API 所需的范围 - 所以这应该不是问题。
const ccrRequest = {
scopes: ["https://graph.microsoft.com/AppRoleAssignment.ReadWrite.All"],
}
const accessToken = await cca.acquireTokenByClientCredential(ccrRequest)
cca 是 ConfidentialClientApplication
,我已经三重检查我的配置是否正确。
当我尝试获取范围时,出现以下错误:
1002012 - [2021-09-15 12:15:42Z]: AADSTS1002012: The provided value for scope https://graph.microsoft.com/AppRoleAssignment.ReadWrite.All openid profile offline_access is not valid. Client credential flows must have a scope value with /.default suffixed to the resource identifier (application ID URI).\r\n'
显然错误告诉我使用 ./default
范围,(我真的不知道为什么)。但是根据文档,./default
范围应该给了我所有的应用程序范围。然而这并没有发生:
0:'https://graph.microsoft.com/.default'
1:'openid'
2:'profile'
3:'offline_access'
以上是我请求 https://graph.microsoft.com/.default
范围时随访问令牌提供的范围。当然,这并不代表我在门户中授予 API 的权限。
当我执行 fetch()
请求时,出现以下错误:
Insufficient privileges to complete the operation.
关于 ClientCredentials 流程的一些基本知识我在这里遗漏了吗?
您需要转到应用程序注册的API权限选项卡,在Microsoft Graph API上添加您需要的应用程序权限(不是委托权限) ],然后 运行 至少以应用程序管理员身份获得管理员同意。然后您应该能够使用 /.default 范围并在访问令牌的角色声明中获得所需的权限。
Openid、配置文件和 offline_access 范围在客户端凭据方案中没有意义。 没有用户,所以 openid 和配置文件范围什么都不做。 offline_access 范围不是必需的,因为您不需要刷新令牌。您拥有凭据,可以在需要新令牌时使用它们。