/// <summary> /// Initializes AzureSMProfile using passed in access token. /// </summary> /// <param name="environment">Environment object.</param> /// <param name="subscriptionId">Subscription Id</param> /// <param name="accessToken">AccessToken to use with profile.</param> /// <param name="accountId">AccountId for the new account.</param> /// <param name="storageAccount">Storage account name (optional).</param> /// <returns></returns> public void InitializeProfile(AzureEnvironment environment, Guid subscriptionId, string accessToken, string accountId, string storageAccount) { if (environment == null) { throw new ArgumentNullException("environment"); } if (accessToken == null) { throw new ArgumentNullException("accessToken"); } // Add environment if not public if (!AzureEnvironment.PublicEnvironments.ContainsKey(environment.Name)) { AddOrSetEnvironment(environment); } // Add account var azureAccount = new AzureAccount { Id = accountId, Type = AzureAccount.AccountType.AccessToken }; azureAccount.SetSubscriptions(subscriptionId.ToString()); azureAccount.SetAccessToken(accessToken); AddOrSetAccount(azureAccount); // Add subscription var azureSubscription = new AzureSubscription { Id = subscriptionId.ToString(), Name = subscriptionId.ToString(), }; azureSubscription.SetEnvironment(environment.Name); if (!string.IsNullOrEmpty(storageAccount)) { azureSubscription.SetStorageAccount(storageAccount); } azureSubscription.SetDefault(); azureSubscription.SetAccount(accountId); AddOrSetSubscription(azureSubscription); }
public void CanAuthenticateWithAccessToken() { AzureSessionInitializer.InitializeAzureSession(); IAuthenticatorBuilder authenticatorBuilder = new DefaultAuthenticatorBuilder(); AzureSession.Instance.RegisterComponent(AuthenticatorBuilder.AuthenticatorBuilderKey, () => authenticatorBuilder); PowerShellTokenCacheProvider factory = new InMemoryTokenCacheProvider(); AzureSession.Instance.RegisterComponent(PowerShellTokenCacheProvider.PowerShellTokenCacheProviderKey, () => factory); string tenant = Guid.NewGuid().ToString(); string userId = "*****@*****.**"; var armToken = Guid.NewGuid().ToString(); var graphToken = Guid.NewGuid().ToString(); var kvToken = Guid.NewGuid().ToString(); var account = new AzureAccount { Id = userId, Type = AzureAccount.AccountType.AccessToken }; account.SetTenants(tenant); account.SetAccessToken(armToken); account.SetProperty(AzureAccount.Property.GraphAccessToken, graphToken); account.SetProperty(AzureAccount.Property.KeyVaultAccessToken, kvToken); var authFactory = new AuthenticationFactory(); var environment = AzureEnvironment.PublicEnvironments.Values.First(); var checkArmToken = authFactory.Authenticate(account, environment, tenant, new System.Security.SecureString(), "Never", null); VerifyToken(checkArmToken, armToken, userId, tenant); checkArmToken = authFactory.Authenticate(account, environment, tenant, new System.Security.SecureString(), "Never", null, environment.ActiveDirectoryServiceEndpointResourceId); VerifyToken(checkArmToken, armToken, userId, tenant); var checkGraphToken = authFactory.Authenticate(account, environment, tenant, new System.Security.SecureString(), "Never", null, AzureEnvironment.Endpoint.GraphEndpointResourceId); VerifyToken(checkGraphToken, graphToken, userId, tenant); checkGraphToken = authFactory.Authenticate(account, environment, tenant, new System.Security.SecureString(), "Never", null, environment.GraphEndpointResourceId); VerifyToken(checkGraphToken, graphToken, userId, tenant); var checkKVToken = authFactory.Authenticate(account, environment, tenant, new System.Security.SecureString(), "Never", null, environment.AzureKeyVaultServiceEndpointResourceId); VerifyToken(checkKVToken, kvToken, userId, tenant); checkKVToken = authFactory.Authenticate(account, environment, tenant, new System.Security.SecureString(), "Never", null, AzureEnvironment.Endpoint.AzureKeyVaultServiceEndpointResourceId); VerifyToken(checkKVToken, kvToken, userId, tenant); }
public void CanGetServiceClientCredentialsWithAccessToken() { AzureSessionInitializer.InitializeAzureSession(); IAuthenticatorBuilder authenticatorBuilder = new DefaultAuthenticatorBuilder(); AzureSession.Instance.RegisterComponent(AuthenticatorBuilder.AuthenticatorBuilderKey, () => authenticatorBuilder); PowerShellTokenCacheProvider factory = new InMemoryTokenCacheProvider(); AzureSession.Instance.RegisterComponent(PowerShellTokenCacheProvider.PowerShellTokenCacheProviderKey, () => factory); string tenant = Guid.NewGuid().ToString(); string userId = "*****@*****.**"; var armToken = Guid.NewGuid().ToString(); var graphToken = Guid.NewGuid().ToString(); var kvToken = Guid.NewGuid().ToString(); var account = new AzureAccount { Id = userId, Type = AzureAccount.AccountType.AccessToken }; account.SetTenants(tenant); account.SetAccessToken(armToken); account.SetProperty(AzureAccount.Property.GraphAccessToken, graphToken); account.SetProperty(AzureAccount.Property.KeyVaultAccessToken, kvToken); var authFactory = new AuthenticationFactory(); var environment = AzureEnvironment.PublicEnvironments.Values.First(); var mockContext = new AzureContext() { Account = account }; var credentials = authFactory.GetServiceClientCredentials(mockContext); VerifyAccessTokenInServiceClientCredentials(credentials, armToken); credentials = authFactory.GetServiceClientCredentials(mockContext, AzureEnvironment.Endpoint.Graph); VerifyAccessTokenInServiceClientCredentials(credentials, graphToken); credentials = authFactory.GetServiceClientCredentials(mockContext, AzureEnvironment.Endpoint.AzureKeyVaultServiceEndpointResourceId); VerifyAccessTokenInServiceClientCredentials(credentials, kvToken); }