Пример #1
0
        public void EnsureCacheLifetime()
        {
            var keyVaultHelper = new KeyVaultHelper(ConfigurationManager.AppSettings["ApplicationId"],
                                                    ConfigurationManager.AppSettings["ApplicationCertificate"]);
            var kv = new KeyVaultCache(keyVaultHelper, 4);

            var sw1      = Stopwatch.StartNew();
            var uncached = kv.GetSecret(_secret1, true).GetAwaiter().GetResult();

            sw1.Stop();

            var sw2    = Stopwatch.StartNew();
            var cached = kv.GetSecret(_secret1).GetAwaiter().GetResult();

            sw2.Stop();

            Thread.Sleep(5000);

            var sw3     = Stopwatch.StartNew();
            var refetch = kv.GetSecret(_secret1).GetAwaiter().GetResult();

            sw3.Stop();

            Trace.WriteLine($"Uncached: {sw1.ElapsedMilliseconds}, cached: {sw2.ElapsedMilliseconds}, refetch: {sw3.ElapsedMilliseconds} ms");

            Assert.AreEqual(uncached, cached);
            Assert.AreEqual(refetch, cached);
            Assert.IsTrue(sw1.ElapsedMilliseconds > 100);
            Assert.IsTrue(sw2.ElapsedMilliseconds < 10);
            Assert.IsTrue(sw3.ElapsedMilliseconds > 100);
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            // Authenticate
            string clientId       = "21c9f15e-44c0-4a0c-93ce-9a1c4026c8d8";
            string clientSecret   = "H8?fCvA3Rj8ZRI[?NwM?q53YP?G6nquo";
            string tenantId       = "188285f7-8f1e-4c0d-a0bc-797e3e38c5b3";
            string subscriptionId = "16c4dd7c-eae8-42bc-ae66-6e5691642e32";
            string BASESECRETURI  = "https://skptestkv01.vault.azure.net/secrets/"; // available from the Key Vault resource page


            AzureCredentials credentials = SdkContext.AzureCredentialsFactory.FromServicePrincipal(clientId, clientSecret, tenantId, AzureEnvironment.AzureGlobalCloud).WithDefaultSubscription(subscriptionId);

            var keyClient = new KeyVaultClient(async(authority, resource, scope) =>
            {
                var adCredential          = new ClientCredential(clientId, clientSecret);
                var authenticationContext = new AuthenticationContext(authority, null);
                return((await authenticationContext.AcquireTokenAsync(resource, adCredential)).AccessToken);
            });

            // Connect to Key Vault using Client ID and Secret
            KeyVaultCache keyVaultCache = new KeyVaultCache(BASESECRETURI, clientId, clientSecret);
            // Or use Managed Identity
            //AzureServiceTokenProvider azureServiceTokenProvider = new AzureServiceTokenProvider();
            //KeyVaultClient keyVaultClient = new KeyVaultClient(new KeyVaultClient.AuthenticationCallback(azureServiceTokenProvider.KeyVaultTokenCallback));

            var cacheSecret = keyVaultCache.GetCachedSecret("testsecret");

            string connectionString = cacheSecret.Result;

            string str = "Result:" + connectionString;
        }
Пример #3
0
        /// <inheritdoc />
        public KvTests()
        {
            var keyVaultHelper = new KeyVaultHelper(ConfigurationManager.AppSettings["ApplicationId"],
                                                    ConfigurationManager.AppSettings["ApplicationCertificate"]);

            _kv      = new KeyVaultCache(keyVaultHelper);
            _secret1 = ConfigurationManager.AppSettings["Secret1"];
        }
Пример #4
0
 public static void UpdateOOO(TimeWindow duration)
 {
     var email_user = Environment.GetEnvironmentVariable("email_user");
     var email = Environment.GetEnvironmentVariable("email");
     var ews_url = Environment.GetEnvironmentVariable("ews_url");
     string clientId = Environment.GetEnvironmentVariable("akvClientId");
     string clientSecret = Environment.GetEnvironmentVariable("akvClientSecret");
     string tenantId = Environment.GetEnvironmentVariable("akvTenantId");
     string subscriptionId = Environment.GetEnvironmentVariable("akvSubscriptionId");
     string kvURL = Environment.GetEnvironmentVariable("akvName");
     string secretName = Environment.GetEnvironmentVariable("akvSecret");
     AzureCredentials credentials = SdkContext.AzureCredentialsFactory.FromServicePrincipal(clientId, clientSecret, tenantId, AzureEnvironment.AzureGlobalCloud).WithDefaultSubscription(subscriptionId);
     var keyClient = new KeyVaultClient(async (authority, resource, scope) =>
     {
         var adCredential = new ClientCredential(clientId, clientSecret);
         var authenticationContext = new AuthenticationContext(authority, null);
         return (await authenticationContext.AcquireTokenAsync(resource, adCredential)).AccessToken;
     });
     KeyVaultCache keyVaultCache = new KeyVaultCache(kvURL, clientId, clientSecret);
     var cacheSecret = keyVaultCache.GetCachedSecret(secretName);
     string email_pass = cacheSecret.Result;
     // Create the binding.
     ExchangeService service = new ExchangeService();
     service.TraceEnabled = false;
     service.TraceFlags = TraceFlags.All;
     // Set the credentials for the on-premises server.
     service.Credentials = new WebCredentials(email_user, email_pass);
     // Set the URL.
     service.Url = new Uri(ews_url);
     // Return the Out Of Office object that contains OOF state for the user whose credendials were supplied at the console. 
     // This method will result in a call to the Exchange Server.
     OofSettings userOOFSettings = service.GetUserOofSettings(email);
     OofSettings userOOF = new OofSettings();
     // Select the OOF status to be a set time period.
     userOOF.State = OofState.Scheduled;
     // Select the time period to be OOF
     userOOF.Duration = duration;
     // Select the external audience that will receive OOF messages.
     userOOF.ExternalAudience = OofExternalAudience.All;
     // Select the OOF reply for your internal audience.
     userOOF.InternalReply = userOOFSettings.InternalReply;
     // Select the OOF reply for your external audience.
     userOOF.ExternalReply = userOOFSettings.ExternalReply;
     service.SetUserOofSettings(email, userOOF);
     Console.WriteLine("Updated OOF");
     Console.WriteLine("StartDate {0:MM/dd/yy H:mm:ss zzz}", duration.StartTime);
     Console.WriteLine("EndDate {0:MM/dd/yy H:mm:ss zzz}", duration.EndTime);
     return;
 }