当前位置: 首页 > 知识库问答 >
问题:

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

夏侯昆琦
2023-03-14

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

此范围转换为权限访问目录,作为此处提到的html" target="_blank">登录用户-https://developer.microsoft.com/en-us/graph/docs/authorization/permission_scopes

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

在新门户上:

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

配置访问控制时,我的租户的唯一订阅是访问 Azure Active Directory,我无法在新门户中对此配置访问控制。在浏览器中,当我选择访问控制 (IAM) 时,我看到错误 - “调用 ARM 失败,httpCode=BadRequest,errorCode=DisallowOperation,message=不允许当前订阅类型对任何提供程序命名空间执行操作。请使用其他订阅。原因 = 错误请求。“添加”角色按钮也被禁用。

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

在旧门户上:

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

Microsoft Graph
Windows Azure Active Directory

我在门户上验证了两个 API 是否都配置为以登录用户身份访问目录的权限。即使在这种情况下,当我尝试访问 https://graph.microsoft.com/beta/policies 终结点以列出租户上的策略时,我也会不断收到 403 禁止。

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

{
    "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 中存在阻止正确配置所有权限的错误。非常感谢对此的任何帮助/指示!

请注意:

    < li >我只使用测试版API,因为我没有在1.0版API上找到相应的策略endpoint,而Azure Graph API文档建议使用Microsoft Graph API。 < li >在相同的配置下,使用Azure Graph APIendpoint也会为policiesendpoint返回403禁止错误(https://msdn . Microsoft . com/zh-cn/library/Azure/ad/Graph/API/policy-operations # list-policies)

共有1个答案

席安康
2023-03-14

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

要为用户获得委托权限的访问令牌,您需要使用其他流,如授权代码授权流。详情可以参考这个链接。

 类似资料:
  • 问题内容: 我试图通过从slide_images文件夹中获取所有图像名称并将其附加到来动态地动态显示滑块图像。 问题答案: 最后,我通过使用json解决了这个问题。 首先,我创建getimages.php文件并读取该文件中的目录,并获取所有图像名称并将该名称存储在数组中。 getimages.php 从要动态加载图像的页面调用getimages.php。 index.php 这对我来说是完美的。

  • 问题内容: 我正在尝试使用Sharepoint 2013上的rest api创建一个简单的列表项。我的代码: 尝试发送数据时,出现403“禁止”错误。 我在此站点和列表上具有完整的管理员特权。 问题答案: 几天前找到了解决方案:我忘记将请求摘要表格添加到正文中。它应具有以下结构;

  • Spring我是新来的。我试图在我的数据库中添加一个新目标。在我添加spring security之前,它是有效的,但现在如果我单击添加新目标,我有一个问题: 出现意外错误(类型=禁止,状态=403)。被禁止的 我的goat-add.html: WebSecurity配置类: 我的控制器: 我读到这个问题可以是如果不使用csrf,但我不明白我怎么能解决它。 所有代码:https://github.

  • 问题内容: 每当我尝试从数据库中获取用户信息时,都会收到-error 消息。关于下面的代码,每当我尝试通过按Ajax测试按钮尝试请求时,它都无法运行并给我发出警报,但是在控制台中也给我一个-error。我不确定是否与Spring安全性有关? 用户JSP页面: 用户控制器类: 问题答案: 它通常是由Spring默认的CSRF保护引起的。 例如,如果你使用JS代码中的DELETE HTTP请求,则还需

  • 我正在使用AWS SDK连接到弹性搜索。我正在浏览https://docs.aws.amazon.com/elasticsearch-service/latest/developerguide/es-indexing.html 本主题中的其他问题更像是权限问题或在给ElasticSearch写信时出现的问题。对我来说,写作很好,只有阅读给了我错误 POST方法工作得很好,它正在添加索引。我正在以相

  • 我试图从XML类型列中检索某个节点。 我的代码在本地环境中的Tomcat中运行良好,但当我创建EAR文件并将其部署到WeSphere Application Server中时。我得到一个错误: 引起:java.lang.NoClassDefFoundError:oracle.xdb.XMLType 在oracle.jdbc.driver.NamedTypeAccessor.getOracleObj