2017-05-08 1 views
2

J'ai un client qui utilise un compte liveID pour gérer plus de 20 annuaires Azure AD différents.Comment puis-je utiliser MS Graph pour répertorier des instances Azure AD pour un compte LiveID donné?

Comment puis-je obtenir une liste de toutes les instances Azure AD associées à ce compte?

J'ai essayé d'utiliser this graph explorer pour déterminer quelle requête était correcte, mais chaque fois que j'essayais de consentir à un accord de lecture de répertoire, l'outil ne l'acceptait pas. (elle serait exécutée, mais la case à cocher serait effacée lors de l'inspection)

Mon but est de déterminer au moment de l'exécution quelles instances ont eu un «consentement administratif» pour accéder aux applications stockées dans mon locataire. Ensuite, je vais inviter l'administrateur à consentir pour ces applications.

Je marquage comme MSAL et ADAL, je ne peux pas non plus de travailler avec un compte MSFT qui est un administrateur pour Azure AD

Test

J'utilise ce MSFT sample et affiché ce code de débogage sur n'importe quel contrôleur qui utilise actuellement ActiveDirectoryClient. Ce code fonctionne pour tout compte 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 + " " + [email protected]); 
        } 
       } 
       pagedCollectionTenants = pagedCollectionTenants.GetNextPageAsync().Result; 
      } while (pagedCollectionTenants != null); 

Les résultats pour un compte MSFT est le suivant:

enter image description here

Répondre

2

Comment puis-je obtenir une liste de toutes les instances AD Azure associés à ce compte?

Je ne suis pas sûr que Microsoft Graph api exposer l'appel api pour obtenir une liste de toutes les instances AD Azure associés à ce compte. Mais j'ai remarqué dans le nouveau portail azur, je pouvais choisir plusieurs répertoires actifs Windows Azure en cliquant sur mon nom d'utilisateur dans la partie supérieure droite du portail. Fiddler vous pourriez trouver appel api dont l'utilisation portail pour obtenir plusieurs Windows Azure informations annuaires Active Directory:

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

Ensuite, vous pouvez ajouter Windows Azure Service Management API à required permissions dans votre application: enter image description here

Ensuite, en utilisant authorization code flow, vous devez obtenez le jeton d'accès pour Windows Azure Service Management API en définissant la ressource: https://management.core.windows.net/.

Une fois que vous obtenez le jeton d'accès, vous pouvez essayer ci-dessous api appels pour obtenir tous les répertoires actifs Azure:

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

Le résultat:

enter image description here

Si votre compte est un Microsft Compte et souhaitez vous authentifier avec l'application, vous pouvez ajouter le compte en tant que external user in AAD.

+0

C'est génial! Pourtant, il serait vraiment agréable d'avoir cela dans Microsoft Graph. –