我正在自动请求 AAD 服务主体/应用程序,或者更具体地说是 API,并尝试使用 Graph 或 PowerShell 拉出通过门户可用的所有 API 的列表。
具体来说,如果您进入应用程序并单击“API 权限”选项卡,您将获得 API 集合列表,然后向下钻取到“委托或应用程序权限”,最后是 API。以编程方式走这棵树的任何方式都会很棒!
我并不希望这份名单被曝光,但希望有人能提供帮助。
在此先感谢,安迪
我正在自动请求 AAD 服务主体/应用程序,或者更具体地说是 API,并尝试使用 Graph 或 PowerShell 拉出通过门户可用的所有 API 的列表。
具体来说,如果您进入应用程序并单击“API 权限”选项卡,您将获得 API 集合列表,然后向下钻取到“委托或应用程序权限”,最后是 API。以编程方式走这棵树的任何方式都会很棒!
我并不希望这份名单被曝光,但希望有人能提供帮助。
在此先感谢,安迪
当然,您可以从 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 是否有“应用程序”作为允许的成员类型,这些是应用程序权限。