コード例 #1
0
        private static IList <IAzureTenant> ProcessTenants(AccountTokenWrapper accountTokenWrapper, Account account)
        {
            IList <IAzureTenant> tenants = new List <IAzureTenant>();

            if (account.Properties != null && account.Properties.Tenants != null)
            {
                foreach (Tenant tenant in account.Properties.Tenants)
                {
                    AccountSecurityToken token;
                    if (accountTokenWrapper.SecurityTokenMappings.TryGetValue(tenant.Id, out token))
                    {
                        AzureTenant azureTenant = new AzureTenant()
                        {
                            TenantId             = tenant.Id,
                            AccountDisplayableId = tenant.DisplayName,
                            Resource             = token.Resource,
                            AccessToken          = token.Token,
                            TokenType            = token.TokenType
                        };
                        tenants.Add(azureTenant);
                    }
                    // else ignore for now as we can't handle a request to get a tenant without an access key
                }
            }
            return(tenants);
        }
コード例 #2
0
        /// <summary>
        /// Public for testing purposes. Creates an Azure account with the correct set of mappings for tenants etc.
        /// </summary>
        /// <param name="accountTokenWrapper"></param>
        /// <returns></returns>
        public AzureUserAccount CreateUserAccount(AccountTokenWrapper accountTokenWrapper)
        {
            Account account = accountTokenWrapper.Account;

            CommonUtil.CheckForNull(accountTokenWrapper, nameof(accountTokenWrapper));
            CommonUtil.CheckForNull(account, nameof(account));
            CommonUtil.CheckForNull(account.Key, nameof(account) + ".Key");
            CommonUtil.CheckForNull(accountTokenWrapper.SecurityTokenMappings, nameof(account) + ".SecurityTokenMappings");
            AzureUserAccount userAccount = new AzureUserAccount();

            userAccount.UniqueId              = account.Key.AccountId;
            userAccount.DisplayInfo           = ToDisplayInfo(account);
            userAccount.NeedsReauthentication = account.IsStale;
            userAccount.AllTenants            = ProcessTenants(accountTokenWrapper, account);
            return(userAccount);
        }
コード例 #3
0
        /// <summary>
        /// Set current logged in user
        /// </summary>
        public async Task <IUserAccount> SetCurrentAccountAsync(object account)
        {
            CommonUtil.CheckForNull(account, nameof(account));
            AccountTokenWrapper accountTokenWrapper = account as AccountTokenWrapper;

            if (accountTokenWrapper != null)
            {
                AzureUserAccount userAccount = CreateUserAccount(accountTokenWrapper);
                accountsMap[userAccount.UniqueId] = userAccount;
                currentAccountId = userAccount.UniqueId;
            }
            else
            {
                throw new ServiceFailedException(string.Format(CultureInfo.CurrentCulture, SR.UnsupportedAuthType, account.GetType().Name));
            }
            OnCurrentAccountChanged();
            return(await GetCurrentAccountAsync());
        }
コード例 #4
0
        private async Task <AzureAuthenticationManager> CreateAccountManager(AccountTokenWrapper currentAccount,
                                                                             IEnumerable <IAzureUserAccountSubscriptionContext> subscriptions, bool shouldFail = false)
        {
            AzureAuthenticationManager azureAuthenticationManager = new AzureAuthenticationManager();

            azureAuthenticationManager.SetServiceProvider(serviceProvider);
            if (currentAccount != null)
            {
                await azureAuthenticationManager.SetCurrentAccountAsync(currentAccount);
            }

            if (!shouldFail)
            {
                resourceManagerMock.Setup(x => x.GetSubscriptionContextsAsync(It.IsAny <IAzureUserAccount>())).Returns(Task.FromResult(subscriptions));
            }
            else
            {
                resourceManagerMock.Setup(x => x.GetSubscriptionContextsAsync(It.IsAny <IAzureUserAccount>())).Throws(new Exception());
            }

            return(azureAuthenticationManager);
        }