【问题标题】:Permissions required to get Azure Application using same application's client id and secret使用相同应用程序的客户端 ID 和密码获取 Azure 应用程序所需的权限
【发布时间】:2022-07-04 01:13:57
【问题描述】:

我已经执行的步骤,

  1. 创建 Azure 应用程序

    • 创建了 Azure 应用程序
    • 创建了一个秘密
    • 创建了服务主体 注意:我没有添加任何额外的权限或同意。
  2. 使用“客户端凭据流”(ClientId 和 ClientSecret)获取应用程序令牌

以下请求中使用的

ObjectId 与我在上面创建的应用程序相同。

  1. GET https://graph.microsoft.com/v1.0/applications/{{objectId}}
    • 我能够获得“Azure 应用程序”。

但是,根据文档GET Application,我需要至少“Application.Read.All”权限才能获得应用程序。

同样, 4. 获取https://graph.microsoft.com/v1.0/servicePrincipals/{{objectId}} - 我可以得到“服务主体”。

但是,根据文档GET ServicePrincipal,我需要至少“Application.Read.All”权限才能获得应用程序。

问题
这是一种预期的行为,我能够获取我自己的 Azure 应用程序,而无需任何额外的权限。或者它是一些错误。因为我找不到任何支持这一点的文档。

【问题讨论】:

  • 如果回答对您有帮助,请Accept it as an Answer,以便其他遇到相同问题的人可以找到此解决方案并解决他们的问题。

标签: azure azure-ad-graph-api


【解决方案1】:

如果您使用您创建的应用程序生成访问令牌,然后使用 objectId 搜索同一个应用程序,并使用服务主体 objectId 搜索与其关联的服务主体,那么您将不需要任何类型其他权限,即Application.Read.All/Directory.Read.All,因为您正在使用同一个应用程序的访问令牌来查找应用程序的详细信息。但是,当您使用该访问令牌搜索 Active Directory 中存在的其他应用程序时,您肯定需要文档中提到的权限之一,并且它没有访问目录或其他应用程序的权限。

示例:

创建了一个名为 Test 的应用注册,除了默认设置之外没有授予任何其他权限:

使用客户端凭据流尝试搜索我为其生成令牌的相同应用程序对象 ID 和服务主体对象 ID:

但是如果我尝试找到其他类似下面的应用程序,则使用相同的访问令牌会出错:

【讨论】:

  • 是的,我观察到相同的行为,并且我们能够使用相同应用程序的客户端 ID 和客户端密码获取应用程序和服务主体详细信息这一事实是有意义的。但是是否有任何官方文档可以支持这种行为?
  • @AADITYARANE,这是一种预期的行为......为什么应用程序需要权限才能查看自己的清单/详细信息。不幸的是,没有文档支持这一点。
【解决方案2】:

我在“微软问答”中提出了同样的问题。他们在各自的文档中添加了有关行为的 cmets。

参考资料: https://github.com/microsoftgraph/microsoft-graph-docs/issues/15880 https://github.com/microsoftgraph/microsoft-graph-docs/issues/15879

【讨论】:

    猜你喜欢
    • 2012-03-06
    • 2022-12-15
    • 2022-08-19
    • 2020-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-04
    相关资源
    最近更新 更多