private IAccessToken AcquireAccessToken( IAzureAccount account, IAzureEnvironment environment, string tenantId, SecureString password, string promptBehavior, Action <string> promptAction, string resourceId = AzureEnvironment.Endpoint.ActiveDirectoryServiceEndpointResourceId) { if (account.Type == AzureAccount.AccountType.AccessToken) { tenantId = tenantId ?? account.GetCommonTenant(); return(new SimpleAccessToken(account, tenantId)); } return(AzureSession.Instance.AuthenticationFactory.Authenticate( account, environment, tenantId, password, promptBehavior, promptAction, _cache, resourceId)); }
private List <AzureTenant> ListAccountTenants( IAzureAccount account, IAzureEnvironment environment, SecureString password, string promptBehavior, Action <string> promptAction) { IList <AzureTenant> result = new List <AzureTenant>(); var commonTenant = account.GetCommonTenant(); try { var commonTenantToken = AcquireAccessToken( account, environment, commonTenant, password, promptBehavior, promptAction); result = SubscriptionAndTenantClient?.ListAccountTenants(commonTenantToken, environment); } catch { WriteWarningMessage(string.Format(ProfileMessages.UnableToAqcuireToken, commonTenant)); if (account.IsPropertySet(AzureAccount.Property.Tenants)) { result = account.GetPropertyAsArray(AzureAccount.Property.Tenants) .Select(ti => { var tenant = new AzureTenant(); Guid guid; if (Guid.TryParse(ti, out guid)) { tenant.Id = ti; tenant.Directory = AccessTokenExtensions.GetDomain(account.Id); } else { tenant.Directory = ti; } return(tenant); }).ToList(); } if (!result.Any()) { throw; } } return(result.ToList()); }
private List <AzureTenant> ListAccountTenants( IAzureAccount account, IAzureEnvironment environment, SecureString password, string promptBehavior, Action <string> promptAction) { List <AzureTenant> result = new List <AzureTenant>(); var commonTenant = account.GetCommonTenant(); try { var commonTenantToken = AcquireAccessToken( account, environment, commonTenant, password, promptBehavior, promptAction); SubscriptionClient subscriptionClient = null; try { subscriptionClient = AzureSession.Instance.ClientFactory.CreateCustomArmClient <SubscriptionClient>( environment.GetEndpointAsUri(AzureEnvironment.Endpoint.ResourceManager), new TokenCredentials(commonTenantToken.AccessToken) as ServiceClientCredentials, AzureSession.Instance.ClientFactory.GetCustomHandlers()); //TODO: Fix subscription client to not require subscriptionId result = MergeTenants(account, subscriptionClient.Tenants.List(), commonTenantToken); } finally { // In test mode, we are reusing the client since disposing of it will // fail some tests (due to HttpClient being null) if (subscriptionClient != null && !TestMockSupport.RunningMocked) { subscriptionClient.Dispose(); } } } catch { // Unable to acquire token for tenant if (account.IsPropertySet(AzureAccount.Property.Tenants)) { result = account.GetPropertyAsArray(AzureAccount.Property.Tenants) .Select(ti => { var tenant = new AzureTenant(); Guid guid; if (Guid.TryParse(ti, out guid)) { tenant.Id = ti; tenant.Directory = AccessTokenExtensions.GetDomain(account.Id); } else { tenant.Directory = ti; } return(tenant); }).ToList(); } if (!result.Any()) { throw; } } return(result); }