【发布时间】:2021-09-17 07:39:56
【问题描述】:
我有一个 API,我想通过它删除 Azure AD 中的用户。
API已注册,访问graph的应用范围如下:
- User.ReadWrite.All(根据documentation应该足够了)
此外,API 具有在创建时分配的默认角色,即:
- 属性分配管理员
- 属性赋值阅读器
- 云应用管理员
- 报告阅读器
^ 不确定这些是否重要 - 尽管如此,我不确定是否可以在免费层级下分配任何其他角色。
反正我是这样调用graph的:
module.exports.deleteUserById = async (objectId) => {
const ccrRequest = {
scopes: ['https://graph.microsoft.com/.default'],
}
const accessToken = await cca.acquireTokenByClientCredential(ccrRequest)
const options = {
method: "DELETE",
headers: { 'Authorization': `Bearer ${accessToken.accessToken}`, 'Content-Type': "application/json" },
}
return await fetch(graphUsers() + `/${objectId}`, options)
}
上面应该可以工作,但是当我尝试删除任何给定用户时,调用会返回错误:
code:'Authorization_RequestDenied' message:'权限不足,无法完成操作。'
【问题讨论】:
-
除了您的
socpe之外,您是否在 azure 门户上拥有User.ReadWrite.All应用程序权限?并确认您已接受管理员同意。必须有Global Administrator和User Administrator才能执行删除操作/ -
这些角色不够执行
delete operation属性赋值administrator Attribute assignment reader Cloud application administrator Reports reader -
@MdFaridUddinKiron 是的,添加并授予了应用程序范围。我可能怀疑我需要将“用户管理员”添加到我的服务主体 - 但我似乎无法在任何地方添加它?这是免费层 azure 广告的限制吗?
-
我不确定您可以查看here 的免费路径,但此操作必须使用
Global Administrator或User Administrator。 -
这验证了我最初的想法——我只是怀疑如何将角色添加到校长。当我去
Enterprise applications -> principal name -> Roles and administrators时,没有添加另一个角色的选项。
标签: javascript azure azure-active-directory