Microsoft Graph API:尝试检索租户上的策略时出现403 Forbidden错误

时间:2017-04-03 22:49:28

标签: microsoft-graph azure-ad-graph-api

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

此范围转换为权限 Access目录作为登录用户,如此处所述 - 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 ,我无法在新门户中为此配置访问控制。从浏览器中,当我选择访问控制(IAM)时,我看到错误 - “调用ARM失败,httpCode = BadRequest,errorCode = DisallowedOperation,message =当前订阅类型不是允许对任何提供者名称空间执行操作。请使用其他订阅。,reason = Bad Request。“ “添加”角色按钮也被禁用。

我是否可以在订阅访问Azure Active Directory 上配置Access控件?如果是这样,是否没有其他方法可以使用API​​检索我的租户的策略?

在旧门户网站上

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

Microsoft Graph
Windows Azure Active Directory

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

以下是我获取的访问令牌上的有效负载( https://login.microsoftonline.com/ {my tenant name} / 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中存在一个错误,即阻止正确配置所有权限。非常感谢任何关于此的帮助/指示!

请注意:

  1. 我只使用测试版API,因为我没有在v1.0 API上找到相应的策略端点,Azure Graph API文档建议使用Microsoft Graph API。
  2. 使用相同的配置,使用Azure Graph API端点还会为策略端点返回403 Forbidden错误( https://msdn.microsoft.com/zh-cn/library/azure/ad/graph/ API /政策的操作#列表的策略的)

1 个答案:

答案 0 :(得分:6)

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

要获取用户的委派权限的访问令牌,您需要使用其他流程,例如授权代码授予流程。您可以参考此detail的链接。