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; }
/// <inheritdoc /> public KvTests() { var keyVaultHelper = new KeyVaultHelper(ConfigurationManager.AppSettings["ApplicationId"], ConfigurationManager.AppSettings["ApplicationCertificate"]); _kv = new KeyVaultCache(keyVaultHelper); _secret1 = ConfigurationManager.AppSettings["Secret1"]; }
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; }