0

我正在开发一项功能来监控安装在 Office 365 环境中的第 3 方应用程序。在 Graph API 中,我发现了一个 REST 调用来获取租户的服务主体。我还找到了详细说明 Azure AD 中服务主体和应用程序之间关系的文章和文档。因此,我了解多租户应用程序将仅具有该应用程序的主机租户上的应用程序对象,而运行该应用程序的每个租户将具有该应用程序的单独服务主体对象。请参阅下面的链接:

Azure Active Directory (Azure AD) 中的应用程序和服务主体对象

但是,当我尝试使用 Get Application REST 调用传入服务主体中的 appId 时,我只能获得托管在本地租户上的应用程序的结果,而不是 Azure 或 AppSource 市场提供的应用程序的结果。我正在使用这个电话:

获取应用程序

当我尝试时,我得到一个 Request_ResourceNotFound 错误代码。

{
    "error": {
        "code": "Request_ResourceNotFound",
        "message": "Resource 'd3cef409-c681-492f-88c3-365b46bc00c5' does not exist or one of its queried reference-property objects are not present.",
        "innerError": {
            "request-id": "1d6f2479-8b9b-4e96-8623-6fa10ed2a3e2",
            "date": "2018-01-04T00:09:36"
        }
    }
}

我什至尝试将 Graph API 转到 Azure AD API,您可以在其中指定租户 ID,但结果相似。这是我尝试过的 Azure API:

应用程序 - 获取

我怀疑有一种方法可以使这些 API 中的一个或两个工作以获取由其他租户托管的应用程序,但是两者的文档都相当简短,我无法弄清楚。

据我所知,有关使用图形 API 或提及服务主体和应用程序的大多数文档是为那些试图让自己的应用程序显示在其租户的 UI 中的人设计的,而不是为设计的工具而设计的像我试图做的那样监控其他应用程序。

最后我应该提到,我的最终目标是尽可能多地收集有关应用程序的元数据,这些元数据超出了应用程序对象中现成的应用程序对象,该应用程序对象似乎只包含一个徽标和一些在服务主体。最终,我正在寻找一种方法,将这些点与具有更丰富信息的市场中的第 3 方应用程序条目联系起来。到目前为止,我也很沮丧,因为它们似乎没有与服务主体或应用程序对象共享任何可靠的唯一标​​识符,这些标识符可以让我将这些点联系起来。仅在应用程序名称上建立连接似乎是不可行的,尤其是当应用程序名称似乎可以在 UI 中更改(出于某种原因)并影响服务主体中的名称时。

但是,对于那些可能未在官方市场上发布的应用程序,获取应用程序 API 可能是我能做的最好的。

任何帮助将不胜感激。谢谢!

4

0 回答 0