2

我正在自动请求 AAD 服务主体/应用程序,或者更具体地说是 API,并尝试使用 Graph 或 PowerShell 拉出通过门户可用的所有 API 的列表。

具体来说,如果您进入应用程序并单击“API 权限”选项卡,您将获得 API 集合列表,然后向下钻取到“委托或应用程序权限”,最后是 API。以编程方式走这棵树的任何方式都会很棒!

我并不希望这份名单被曝光,但希望有人能提供帮助。

在此先感谢,安迪

4

1 回答 1

0

当然,您可以从 MS Graph API 查询服务主体并获得所需内容:https ://docs.microsoft.com/en-us/graph/api/serviceprincipal-list?view=graph-rest-beta&tabs=http .

这为您提供了所有服务主体的列表:https ://docs.microsoft.com/en-us/graph/api/resources/serviceprincipal?view=graph-rest-beta 。

您还可以使用 AzureAD PowerShell 模块的 cmdletGet-AzureADServicePrincipal来获取此数据。

无论您以何种方式获取数据,都可以在oauth2Permissions属性下找到委托权限。

关联应用程序公开的 OAuth 2.0 权限。有关详细信息,请参阅应用程序实体上的 oauth2Permissions 属性定义。不可为空。

应用程序权限位于appRoles属性中。

关联应用程序公开的应用程序角色。有关详细信息,请参阅应用程序实体上的 appRoles 属性定义。不可为空。

但是,并非所有 appRoles 都是应用程序权限。appRole 有一个 allowedMemberTypes 属性:

指定此应用角色定义是否可以通过设置为“用户”分配给用户和组,或通过设置为“应用程序”分配给其他应用程序(在守护程序服务场景中访问此应用程序),或同时分配给两者。

所以你想检查 appRoles 是否有“应用程序”作为允许的成员类型,这些是应用程序权限。

于 2020-03-19T16:02:42.627 回答