我的客户使用liveID帐户管理20多个不同的Azure AD目录。
如何获取与此帐户关联的所有Azure AD实例的列表?
我尝试使用this graph explorer来确定哪个查询是正确的,但每次我尝试同意目录阅读同意时,该工具都不接受它。 (它会运行,但复选框将在检查时清除)
我的目标是在运行时确定哪些实例具有"管理许可"访问存储在我的租户中的应用程序。然后我会提示管理员同意这些应用程序。
我标记为MSAL和ADAL,我无法使用作为Azure AD管理员的MSFT帐户
测试
我正在使用此MSFT sample并将此调试代码发布在当前使用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帐户的结果如下:
答案 0 :(得分:2)
如何获取与此帐户关联的所有Azure AD实例的列表?
我不确定Microsoft Graph api是否公开api调用以获取与此帐户关联的所有Azure AD实例的列表。但我注意到在azure新门户中,我可以通过单击门户右上角的用户名来选择多个Windows Azure Active Directories。使用Fiddler你可以找到api调用哪个门户用来获取多个Windows Azure Active Directories信息:
https://ms.portal.azure.com/AzureHubs/api/tenants/List
然后,您可以在应用中的Windows Azure Service Management API
中添加required permissions
:
然后使用authorization code flow,您需要通过设置资源Windows Azure Service Management API
来获取https://management.core.windows.net/
的访问令牌。
获得访问令牌后,您可以尝试以下api调用来获取所有Azure Active Director:
POST https://ms.portal.azure.com/AzureHubs/api/tenants/List
Authorization: Bearer xxxxx
结果:
如果您的帐户是microsft帐户并想要通过应用进行身份验证,则可以将该帐户添加为external user in AAD。