Microsoft Graph API:尝试检索有关租户的策略时出现 403 禁止错误

Microsoft Graph API: 403 Forbidden error when trying to retrieve policies on tenant

我正在尝试使用 Microsoft Graph API 在 Azure AD 门户上检索为我的租户创建的策略。正如我从图表 API 文档中了解到的那样,所有策略 CRUD 操作都需要 Directory.AccessAsUser.All.

的范围

此范围转换为权限以登录用户身份访问目录,如此处所述 - https://developer.microsoft.com/en-us/graph/docs/authorization/permission_scopes

我一直在尝试在新的 Azure 门户和具有不同故障点的旧门户上配置我的应用程序。

在新门户上:

我按照 https://docs.microsoft.com/en-us/azure/azure-resource-manager/resource-group-create-service-principal-portal 上的说明在我的租户中创建了一个 Web 应用程序。

配置访问控制时,我的租户的唯一订阅是访问 Azure Active Directory,我无法在新门户中为此配置访问控制。在浏览器中,当我 select Access Control (IAM) 时,我看到错误 - "Call to ARM failed with httpCode=BadRequest, errorCode=DisallowedOperation, message=The current subscription type is not permitted to perform operations on any provider namespace. Please use a different subscription., reason=Bad Request." "Add" 角色按钮也被禁用。

我可以不对订阅访问 Azure Active Directory 配置访问控制吗?如果是这样,是否没有其他方法可以使用 API?

为我的租户检索政策

在旧门户网站上:

对于我的应用,我配置了以下权限:

Microsoft Graph
Windows Azure Active Directory

我在门户网站上验证了两个 API 都配置了登录用户 访问目录的权限。 即使在这种情况下,我仍然当我尝试访问 https://graph.microsoft.com/beta/policies 端点以列出有关我的租户的策略时,收到 403 Forbidden。

这是我获得的访问令牌上的负载 (https://login.microsoftonline.com/{我的租户名称}/oauth2/token)

{
    "aud": "https://graph.microsoft.com",
    "iss": "https://sts.windows.net/8b49696d-462a-4a71-9c5c-f570b2222727/",
    "iat": 1491256764,
    "nbf": 1491256764,
    "exp": 1491260664,
    "aio": "Y2ZgYAi68q2XUTk0ykH7/TZzrhYbAA==",
    "app_displayname": "test-app",
    "appid": "951bb92d-5b68-45ae-bb8b-d768b2696ccc",
    "appidacr": "1",
    "idp": "https://sts.windows.net/8b49696d-462a-4a71-9c5c-f570b2222727/",
    "oid": "7ccea836-d389-4328-a155-67092e2805e9",
    "roles": [
        "Device.ReadWrite.All",
        "User.ReadWrite.All",
        "Directory.ReadWrite.All",
        "Group.ReadWrite.All",
        "IdentityRiskEvent.Read.All"
      ],
  "sub": "7ccea836-d389-4328-a155-67092e2805e9",
  "tid": "8b49696d-462a-4a71-9c5c-f570b2222727",
  "uti": "4fmUDNWWHkSoTn2-7gtTAA",
  "ver": "1.0"
}

显然,此令牌缺少 Directory.AccessAsUser.All 角色,这导致了 403 错误。因此,要么我在这里遗漏了一些东西,要么 API 中存在错误,导致所有权限无法正确配置。非常感谢任何关于此的 help/pointers!

请注意:

  1. 我只使用测试版 APIs,因为我没有在 v1.0 APIs 和 Azure Graph API 文档中找到相应的策略端点建议使用 Microsoft Graph API.
  2. 使用相同的配置,使用 Azure Graph API 端点也 returns 策略端点的 403 禁止错误(https://msdn.microsoft。 com/zh-cn/library/azure/ad/graph/api/policy-operations#list-policies)

根据访问令牌中的声明,您使用客户端凭据流 获取了访问令牌,该令牌用于委托应用程序。此类令牌中没有用户的委托权限。

要获取用户委托权限的访问令牌,您需要使用其他流程,例如授权代码授予流程detail.

你可以参考这个 link