public void ManagesPasswordCredential() { var cm = new CredentialsManager(); try { cm.AddPasswordCredential("test", "testy McTester", "dothetestydance", "test credential"); var credential = cm.GetCredentials().Single(s => s.TargetName == "test"); Assert.That(credential.UserName, Is.EqualTo("testy McTester")); Assert.That(credential.Comment, Is.EqualTo("test credential")); Assert.That(credential.CredentialBlob, Is.EqualTo("dothetestydance")); credential.Comment = "Hobos ride the train."; credential.UserName = "******"; credential.CredentialBlob = "sekret"; credential.Save(); credential = cm.GetCredentials().Single(s => s.TargetName == "test"); Assert.That(credential.Comment, Is.EqualTo("Hobos ride the train.")); Assert.That(credential.UserName, Is.EqualTo("Biscut")); Assert.That(credential.CredentialBlob, Is.EqualTo("sekret")); } finally { var credentials = cm.GetCredentials().Where(s => s.TargetName == "test").ToList(); credentials.ForEach(s => cm.DeleteCredential(s)); } }
public void ReadsAllCredentials() { var cm = new CredentialsManager(); var credentials = cm.GetCredentials().ToList(); Assert.That(credentials.Count, Is.GreaterThan(0)); }
public async Task TestStoreCredentialDictionary() { var secrets = new Dictionary <string, string>(); secrets.Add("zoneid", "ABC123"); secrets.Add("secretid", "thereisnosecret"); var test = new StoredCredential { ProviderType = "DNS01.API.Route53", Title = "A test credential", StorageKey = Guid.NewGuid().ToString(), Secret = Newtonsoft.Json.JsonConvert.SerializeObject(secrets) }; var credentialsManager = new CredentialsManager(); credentialsManager.StorageSubfolder = "Tests\\credentials"; var result = await credentialsManager.Update(test); Assert.IsNotNull(result, "Credential stored OK"); var list = await credentialsManager.GetCredentials(); Assert.IsTrue(list.Any(l => l.StorageKey == test.StorageKey), "Credential retrieved"); var secret = await credentialsManager.GetUnlockedCredentialsDictionary(test.StorageKey); Assert.IsNotNull(secret); Assert.IsTrue(secret["zoneid"] == "ABC123", "Credential decrypted"); }
public async Task TestStoreCredential() { var testSecret = "This is a secret"; var test = new StoredCredential { ProviderType = "DNS01.API.Route53", Title = "A test credential", StorageKey = Guid.NewGuid().ToString(), Secret = testSecret }; var credentialsManager = new CredentialsManager(); credentialsManager.StorageSubfolder = "Tests\\credentials"; var result = await credentialsManager.Update(test); Assert.IsNotNull(result, "Credential stored OK"); var list = await credentialsManager.GetCredentials(); Assert.IsTrue(list.Any(l => l.StorageKey == test.StorageKey), "Credential retrieved"); var secret = await credentialsManager.GetUnlockedCredential(test.StorageKey); Assert.IsNotNull(secret); Assert.IsTrue(secret == testSecret, "Credential decrypted"); }
protected override void ProcessRecord() { var cm = new CredentialsManager(); var credentials = cm.GetCredentials(); var isTargetValid = !string.IsNullOrWhiteSpace(TargetName); if (isTargetValid) { credentials = credentials.Where(c => c.TargetName == TargetName); } var isUserValid = !string.IsNullOrWhiteSpace(UserName); if (isUserValid) { credentials = credentials.Where(c => c.UserName == UserName); } var isCommentValid = !string.IsNullOrWhiteSpace(Comment); if (isCommentValid) { credentials = credentials.Where(c => c.Comment == Comment); } WriteObject(credentials, true); }
protected override void ProcessRecord() { var cm = new CredentialsManager(); using (var credential = cm.GetCredentials().SingleOrDefault(c => c.UserName == UserName && c.TargetName == TargetName)) { WriteObject(credential); } }
protected override void ProcessRecord() { var cm = new CredentialsManager(); using (var credential = cm.GetCredentials().Single(c => c.UserName == UserName && c.TargetName == TargetName)) { cm.DeleteCredential(credential); } }
protected override void ProcessRecord() { var cm = new CredentialsManager(); using (var credential = cm.GetCredentials().Single(c => c.UserName == UserName && c.TargetName == TargetName)) { credential.CredentialBlob = Password; credential.Save(); } }
/// <summary> /// Processes request <see cref="DataSet"/> via Fetch Climate. /// </summary> /// <param name="ds">Request <see cref="DataSet"/> with fetching parameters.</param> /// <returns>DataSet with response.</returns> /// <remarks> /// <para> /// There are two types of responses from server: /// If request time is lower than <see cref="maxExecutionTimeWithoutReturns"/> time, /// <see cref="DataSet"/> with request result will be returned. /// If request time exceeds <see cref="maxExecutionTimeWithoutReturns"/> time, <see cref="DataSet"/> /// instance with requets hash and next time to request ("status response") will be returned instead of <see cref="DataSet"/> with result. /// Pass it to the <see cref="Process"/> method after specified time interval again to get the result. /// If client got status response, it must send it back to server to get next status response, or result. But there is exception in this rule (see next). /// For status response, there are three matdata attributes in it: /// -"ExpectedCalculationTime" is expected time, calculation will take. /// Client should request next time after this time will pass. /// -"Hash" is hash of original request dataset. /// -"ReplyWithRequestDs" indicates, whether client needs to resend request /// next time or not. If so, client needs to send entire request next time /// instead of status response, it got from server. /// </para> /// </remarks> public DataSet Process(DataSet ds) { int retryAttempt = 0; int retryTimeDelta = RestApiWrapper.retryStartTimeDelta; while (true) { if (retryAttempt > 1) { //Increase retry time delta, if not first attempt and not first retry. retryTimeDelta = (int)(Math.Round(retryTimeDelta * RestApiWrapper.retryTimeIncreaseCoeff)); } if (retryAttempt > retriesCount) { break; } else if (retryAttempt > 0) { Thread.Sleep(retryTimeDelta); } try { string login = null; string password = null; CredentialsManager.GetCredentials(out login, out password); HttpWebRequest request = WebRequest.Create(serviceUrl) as HttpWebRequest; var credentialCache = new CredentialCache(); credentialCache.Add( new Uri(serviceUrl), "Digest", new NetworkCredential(login, password) ); request.Credentials = credentialCache; request.PreAuthenticate = true; request.AuthenticationLevel = System.Net.Security.AuthenticationLevel.MutualAuthRequested; request.Method = RestApiNamings.postRequestMethodName; //request.AutomaticDecompression = DecompressionMethods.Deflate | DecompressionMethods.GZip; request.ContentType = RestApiNamings.textRequestTypeName; request.Timeout = RestApiWrapper.requestTimeout; byte[] csvBytes = RestApiUtilities.GetCsvBytes(ds); request.ContentLength = csvBytes.Length; using (Stream dataStream = request.GetRequestStream()) { dataStream.Write(csvBytes, 0, csvBytes.Length); } using (HttpWebResponse response = request.GetResponse() as HttpWebResponse) { if (response.ContentType == RestApiNamings.textRequestTypeName) { //DataSet is in response using (Stream dataStream = response.GetResponseStream()) { byte[] responseBytes = RestApiUtilities.ReadBytes(dataStream, (int)response.ContentLength); DataSet resultDs = RestApiUtilities.GetDataSet(responseBytes); return(resultDs); } } else { throw new InvalidOperationException("Unexpected exception. You should never see this"); } } } catch (WebException) { Trace.WriteIf(RestApiWrapper.Tracer.TraceWarning, string.Format("Web exception occured while processing input dataSet. {0} retry attempts left", RestApiWrapper.retriesCount - retryAttempt)); retryAttempt++; } } throw new WebException("Failed to connect to service. Make sure, it's available."); }
public async Task <List <StoredCredential> > GetCredentials() { return(await credentialsManager.GetCredentials()); }
protected override async Task <ICredentials> GetCredentials() { return(await m_credentialsManager.GetCredentials(m_userId, m_ServiceLinkId)); }