【问题标题】:ADAL to MSAL - Insufficient privileges to complete the operationADAL 到 MSAL - 权限不足,无法完成操作
【发布时间】:2021-01-31 13:39:42
【问题描述】:

我有一个场景,我需要将应用程序从 DevOps 管道添加到安全组。我有以下情况很好:

  1. 在管道中,我有以下 powershel 脚本:
if (!((Get-AzADGroupMember -ObjectId ((Get-AzADGroup -DisplayName $groupName).id)).DisplayName -eq $appName)) {Add-AzADGroupMember -MemberObjectId (Get-AzADServicePrincipal -DisplayName $appName).id -TargetGroupObjectId (Get-AzADGroup -DisplayName $groupName).id} else {"member is already part of the group"}
  1. 服务主体拥有 Azure Active Directory Graph 的 API 权限和 Directory.Read.All 权限:

  1. 服务主体是安全组的所有者:

问题是 Azure Active Directory Graph 处于弃用路径,因此我将权限更改为推荐的 Microsoft Graph 权限:

但现在我收到“权限不足,无法完成操作”。错误

请任何人建议我还需要配置什么才能使其工作?

谢谢。

【问题讨论】:

  • 未获得您的最新信息。只是想检查以下答案是否对您有帮助?如果是,您可以accept the answer,这也可以使与您有相同困惑的其他人受益,我们可以将此线程存档。另外,如果仍有任何疑问,请随时在下面发表评论:-)

标签: azure azure-devops azure-active-directory azureadgraph-deprecation adal-deprecation


【解决方案1】:

虽然 AAD Graph 处于弃用的道路上,但 MS Graph 和 AAD Graph 的权限不能混淆,它们并不相同。

你可以使用fiddler4捕获Powershell Az cmdlet的请求,发现它实际上是在调用AAD Graph而不是底部的MS Graph。

当我们使用访问令牌调用官方API时,API需要验证访问令牌是否有效。

有一个名为aud 的声明,表示您正在调用的资源。当您在 Azure AD 应用程序中分配 MS Graph 权限(例如:https://graph.microsoft.com/user.read),但您调用的资源是 AAD Graph https://graph.windows.net/ 时,MS Graph 权限肯定不会包含在访问令牌中。而此时所需的权限应该是https://graph.windows.net/user.read。这就是为什么您会收到错误权限不足以完成操作。

所以在这种情况下,您应该继续使用 AAD Graph 权限。

不用担心 AAD Graph 的停用。在此之前,MS 应该能够提供从 AAD Graph 到 MS Graph 的迁移或其他方式,使其仍然可以工作,而无需用户做太多事情。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-03
    • 2018-06-13
    • 2018-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多