2

我有一个客户正在使用 liveID 帐户来管理 20 多个不同的 Azure AD 目录。

如何获取与此帐户关联的所有 Azure AD 实例的列表?

我尝试使用此图形浏览器来确定哪个查询是正确的,但是每次我尝试同意目录读取同意时,该工具都不接受它。(它会运行,但检查时复选框会被清除)

我的目标是在运行时确定哪些实例已获得“管理许可”来访问存储在我的租户中的应用程序。然后我会提示管理员同意这些应用程序。

我标记为 MSAL 和 ADAL,我无法使用作为 Azure AD 管理员的 MSFT 帐户

测试

我正在使用这个MSFT 示例,并将这个调试代码发布到当前正在使用的任何控制器上ActiveDirectoryClient。此代码适用于任何 AzureAD 帐户。

            var pagedCollectionTenants = await client.TenantDetails.ExecuteAsync();
            do
            {
                var tenants = pagedCollectionTenants.CurrentPage.ToList();
                foreach (var tenant in tenants)
                {
                    System.Diagnostics.Debug.WriteLine(tenant.DisplayName + " id " + tenant.ObjectId + " " +
                        tenant.Street + " " +
                        tenant.City + " " +
                        tenant.State + " " +
                        tenant.PostalCode + " " + tenant.PreferredLanguage + " " + tenant.TelephoneNumber);

                    System.Diagnostics.Debug.WriteLine("   ** Assigned Plans **");
                    foreach (var plan in tenant.AssignedPlans)
                    {
                        System.Diagnostics.Debug.WriteLine( "   "  + plan.AssignedTimestamp + " " + plan.ServicePlanId + " " + plan.Service + " " + plan.CapabilityStatus);
                    }

                    System.Diagnostics.Debug.WriteLine("   ** Provisioned Plans **");
                    foreach (var provisionedPlans in tenant.ProvisionedPlans)
                    {
                        System.Diagnostics.Debug.WriteLine("   " + provisionedPlans.CapabilityStatus + " " + provisionedPlans.ProvisioningStatus + " " + provisionedPlans.Service);
                    }

                    System.Diagnostics.Debug.WriteLine("   ** Verified Domains **");
                    foreach (var domain in tenant.VerifiedDomains)
                    {
                        System.Diagnostics.Debug.WriteLine("   " + domain.Type + " " + domain.Name + " " + domain.Initial + " " + domain.Id + " " + domain.Capabilities + " " + domain.@default);
                    }
                }
                pagedCollectionTenants = pagedCollectionTenants.GetNextPageAsync().Result;
            } while (pagedCollectionTenants != null);

MSFT 帐户的结果如下:

在此处输入图像描述

4

1 回答 1

2

如何获取与此帐户关联的所有 Azure AD 实例的列表?

我不确定 Microsoft Graph api 是否公开 api 调用以获取与此帐户关联的所有 Azure AD 实例的列表。但我注意到在 azure new 门户中,我可以通过单击门户右上角的用户名来选择多个 Windows Azure 活动目录。使用 Fiddler,您可以找到用于获取多个 Windows Azure Active Directory 信息的门户网站的 api 调用:

https://ms.portal.azure.com/AzureHubs/api/tenants/List

然后你可以Windows Azure Service Management APIrequired permissions你的应用程序中添加: 在此处输入图像描述

然后使用 授权码流,您需要Windows Azure Service Management API通过设置资源获取访问令牌:https://management.core.windows.net/

获得访问令牌后,您可以尝试以下 api 调用来获取所有 Azure Active Directory:

POST https://ms.portal.azure.com/AzureHubs/api/tenants/List
Authorization: Bearer xxxxx

结果 :

在此处输入图像描述

如果您的帐户是一个 microsft 帐户并且想要通过 app 进行身份验证,您可以将该帐户添加为AAD 中的外部用户

于 2017-05-09T10:42:23.553 回答