private static List <Secret> GetSearchSecretsByFieldValue(string token, SSWebServiceSoapClient soapClient) { Console.WriteLine("Enter Field Name: "); var fieldName = Console.ReadLine(); Console.WriteLine("Enter Search Term: "); var searchTerm = Console.ReadLine(); var secrets = soapClient.GetSecretsByFieldValue(token, fieldName, searchTerm, false); if (secrets.Errors.Length != 0) { Console.WriteLine("Error: " + string.Join(",", secrets.Errors)); return(null); } if (secrets.Secrets.Length == 0) { Console.WriteLine("No Secrets were found."); return(null); } foreach (var secret in secrets.Secrets) { DisplaySecret(secret); } return(secrets.Secrets.ToList()); }
/// <summary> /// Creates a WCF end point for communicating the Secret Server's webservices /// </summary> private static SSWebServiceSoapClient GetClient(Account account) { BasicHttpSecurityMode mode = BasicHttpSecurityMode.None; if (account.Url.ToLower().StartsWith("https://")) { mode = BasicHttpSecurityMode.Transport; } var binding = new BasicHttpBinding(mode); //Create an endpoint for the URI. var endpoint = new EndpointAddress(account.Url); var client = new SSWebServiceSoapClient(binding, endpoint); return(client); }
/// <summary> /// Demonstrates how to authenticate using web services. /// Assumes that the account is a local account not using Secret Server Online. /// </summary> public void SampleAuthenticateInstalledNoDomain() { //Use a basic HTTP binding for SOAP. var binding = new BasicHttpBinding(); //Create an endpoint for the URI. var endpoint = new EndpointAddress(_webserviceURL); var soapClient = new SSWebServiceSoapClient(binding, endpoint); var result = soapClient.Authenticate("theUserName", "thePassword", string.Empty, string.Empty); if (result.Errors.Length > 0) { //Authentication failed. The Errors array contains the reason(s). } //Successful else { var token = result.Token; //token is the authenticate token. } }
/// <summary> /// Demonstrates how to authenticate using web services. /// Assumes that the account is a domain account on domain "example". /// </summary> public void SampleAuthenticateInstalledWithDomain() { //Use a basic HTTP binding for SOAP. var binding = new BasicHttpBinding(); //Create an endpoint for the URI. var endpoint = new EndpointAddress(_webserviceURL); var soapClient = new SSWebServiceSoapClient(binding, endpoint); var result = soapClient.Authenticate("theUserName", "thePassword", string.Empty, "example"); if (result.Errors.Length > 0) { //Authentication failed. The Errors array contains the reason(s). } //Successful else { var token = result.Token; //token is the authenticate token. } }
private static SecretSummary GetSearchSecretSummary(string token, SSWebServiceSoapClient soapClient, bool includeRestricted = true) { Console.WriteLine("Enter Search Term: "); var secretName = Console.ReadLine(); var secrets = soapClient.SearchSecrets(token, secretName, false, includeRestricted); if (secrets.Errors.Length != 0) { Console.WriteLine("Error: " + string.Join(",", secrets.Errors)); return(null); } if (secrets.SecretSummaries.Length == 0) { Console.WriteLine("No Secrets were found."); return(null); } var secretSummary = GenericMenu(secrets.SecretSummaries.ToDictionary(k => k.SecretName + " (" + k.SecretId + ")")); return(secretSummary); }
/// <summary> /// Example on how to validate a token /// </summary> public void ValidateTokenIsStillValid() { //Use a basic HTTP binding for SOAP. var binding = new BasicHttpBinding(); //Create an endpoint for the URI. var endpoint = new EndpointAddress(_webserviceURL); var soapClient = new SSWebServiceSoapClient(binding, endpoint); var authenticateResult = soapClient.Authenticate("theUserName", "thePassword", string.Empty, string.Empty); //Assume authentication was successful. var token = authenticateResult.Token; var isValidTokenResult = soapClient.GetTokenIsValid(token); if (isValidTokenResult.Errors.Length == 0) { //Token is still valid } else { //Token is invalid. The Errors property on isValidTokenResult contains the reason. } }
/// <summary> /// Displays a Secret by Secret ID /// </summary> public void DisplaySecret() { //Use a basic HTTP binding for SOAP. var binding = new BasicHttpBinding(); //Create an endpoint for the URI. var endpoint = new EndpointAddress(_webserviceURL); var soapClient = new SSWebServiceSoapClient(binding, endpoint); var result = soapClient.Authenticate("theUserName", "thePassword", string.Empty, string.Empty); if (result.Errors.Length > 0) { //Authentication failed. The Errors array contains the reason(s). } //Successful else { var token = result.Token; //The ID of the Secret. Obtain the ID through other web service methods. var secretId = 1; var getSecretResult = soapClient.GetSecretLegacy(token, secretId); if (getSecretResult.Errors.Length > 0) { //Failed to get the secret. The Errors array contains the reason(s). } else { //The display name of the Secret var secretName = getSecretResult.Secret.Name; //The items of the secret var items = getSecretResult.Secret.Items; foreach (var item in items) { //The display name of the field. var fieldName = item.FieldDisplayName; //The value of the field. var fieldValue = item.Value; } } } }
private static void ChangeSettings(Secret secret, string token, SSWebServiceSoapClient soapClient) { secret.SecretSettings.AutoChangeEnabled = GetYesOrNoAnswer("AutoChange Enabled"); secret.SecretSettings.RequiresComment = GetYesOrNoAnswer("Require Comment"); if (GetYesOrNoAnswer("Require Approval For Access")) { secret.SecretSettings.RequiresApprovalForAccess = true; var groupOrUserRecord = GetGroupOrUserRecord(); var approvers = new List <GroupOrUserRecord>(); approvers.Add(groupOrUserRecord); secret.SecretSettings.Approvers = approvers.ToArray(); } else { secret.SecretSettings.RequiresApprovalForAccess = false; } if (GetYesOrNoAnswer("Use Privilege Account")) { var secretSummary = GetSearchSecretSummary(token, soapClient, true); if (secretSummary == null) { secret.SecretSettings.PrivilegedSecretId = null; } else { secret.SecretSettings.PrivilegedSecretId = secretSummary.SecretId; } } else { secret.SecretSettings.PrivilegedSecretId = null; } secret.SecretSettings.CheckOutEnabled = GetYesOrNoAnswer("CheckOut Enabled"); if (secret.SecretSettings.CheckOutEnabled.GetValueOrDefault()) { secret.SecretSettings.CheckOutChangePasswordEnabled = GetYesOrNoAnswer("CheckOut Change Password Enabled"); } secret.SecretSettings.IsChangeToSettings = true; }
/// <summary> /// Displays a Secret by Secret ID /// </summary> public void DisplaySecret() { //Use a basic HTTP binding for SOAP. var binding = new BasicHttpBinding(); //Create an endpoint for the URI. var endpoint = new EndpointAddress(_webserviceURL); var soapClient = new SSWebServiceSoapClient(binding, endpoint); var result = soapClient.Authenticate("theUserName", "thePassword", string.Empty, string.Empty); if (result.Errors.Length > 0) { //Authentication failed. The Errors array contains the reason(s). } //Successful else { var token = result.Token; //The ID of the Secret. Obtain the ID through other web service methods. var secretId = 1; var getSecretResult = soapClient.GetSecretLegacy(token, secretId); if (getSecretResult.Errors.Length > 0) { //Failed to get the secret. The Errors array contains the reason(s). } else { //The display name of the Secret var secretName = getSecretResult.Secret.Name; //The items of the secret var items = getSecretResult.Secret.Items; foreach (var item in items) { //The display name of the field. var fieldName = item.FieldDisplayName; //The value of the field. var fieldValue = item.Value; } } } }
public void SearchSecrets() { //Use a basic HTTP binding for SOAP. var binding = new BasicHttpBinding(); //Create an endpoint for the URI. var endpoint = new EndpointAddress(_webserviceURL); var soapClient = new SSWebServiceSoapClient(binding, endpoint); var result = soapClient.Authenticate("theUserName", "thePassword", string.Empty, string.Empty); if (result.Errors.Length > 0) { //Authentication failed. The Errors array contains the reason(s). } //Successful else { var token = result.Token; //Search for all secrets that contain "Hello" in them. var searchResult = soapClient.SearchSecretsLegacy(token, "Hello"); if (searchResult.Errors.Length > 0) { //Failed to get the secret. The Errors array contains the reason(s). } else { foreach (var summary in searchResult.SecretSummaries) { //The Secret's name var secretName = summary.SecretName; //The name of the Template var templateName = summary.SecretTypeName; //The ID of the Secret. Can be used in GetSecret to obtain more information var secretId = summary.SecretId; } } } }
private static void Main() { var service = new SSWebServiceSoapClient(); Console.WriteLine("username:"******"password:"******""; ConsoleKeyInfo key; do { key = Console.ReadKey(true); // Backspace Should Not Work if (key.Key != ConsoleKey.Backspace && key.Key != ConsoleKey.Enter) { password += key.KeyChar; Console.Write("*"); } else { if (key.Key == ConsoleKey.Backspace && password.Length > 0) { password = password.Substring(0, (password.Length - 1)); Console.Write("\b \b"); } } } // Stops Receving Keys Once Enter is Pressed while (key.Key != ConsoleKey.Enter); Console.WriteLine(); Console.WriteLine("org:"); var org = Console.ReadLine(); Console.WriteLine(); Console.WriteLine("dry run (y/n):"); var dryRun = Console.ReadLine(); Console.Clear(); Console.WriteLine("authenticating..."); var result = service.Authenticate(username, password, org, ""); var authToken = result.Token; Console.Clear(); Console.WriteLine("getting secrets..."); var summaries = service.SearchSecrets(authToken, "").SecretSummaries; Console.Clear(); Console.WriteLine("getting templates..."); var me = service.GetSecretTemplates(authToken).SecretTemplates; var templates = new List<TemplateCount>(); Console.Clear(); Console.Write("checking templates"); var templateStringBuilder = new StringBuilder(); var secretStringBuilder = new StringBuilder(); secretStringBuilder.AppendLine("{\"d\":["); var log = new StringBuilder(); Console.Clear(); var browser = new IE("https://lionlock.com/App/Account/Login"); Console.WriteLine("Login then press enter."); Console.ReadLine(); Console.Clear(); var favorites = service.GetFavorites(authToken); var converter = new SecretConverter(browser, dryRun.ToLower() == "y", favorites.SecretSummaries, log); foreach (var secretSummary in summaries) { var percent = (int) ((Array.IndexOf(summaries, secretSummary)/(double) summaries.Length)*100); RenderConsoleProgress(percent, '+', ConsoleColor.Green, "Loading Secrets, " + percent + "% Completed (" + secretSummary.SecretName + ")"); var secret = service.GetSecret(authToken, secretSummary.SecretId); var template = me.First(t => t.Id == secretSummary.SecretTypeId); converter.Convert(template.Name, secret.Secret); if (secret.Secret.Items.Any(item => item.IsFile)) { log.AppendLine(secret.Secret.Name + " has a file (" + template.Name + ")."); } if (templates.All(t => t.Name != template.Name)) { secretStringBuilder.AppendLine(secret.ToJson()); templates.Add(new TemplateCount {Name = template.Name, Count = 1}); templateStringBuilder.AppendLine(template.ToJson()); } else { templates.First(t => t.Name == template.Name).Count++; } secretStringBuilder.AppendLine(","); } RenderConsoleProgress(100, '+', ConsoleColor.Green, "Loading Secrets, 100% Completed"); Console.Clear(); secretStringBuilder.AppendLine("]}"); var text = ""; foreach (var template in templates) { text = text + string.Format("{0} ({1})", template.Name, template.Count); Console.Out.WriteLine("{0} ({1})", template.Name, template.Count); text = text + "\n"; } Console.ReadLine(); //File.WriteAllText("D:\\SecretStats.txt", text); File.WriteAllText("D:\\Log.txt", log.ToString()); //File.WriteAllText("D:\\TemplateExport.txt", templateStringBuilder.ToString()); //File.WriteAllText("D:\\SecretExport.json", secretStringBuilder.ToString()); }
private static bool EditSecretInternal(Secret secret, Account account, string token, SSWebServiceSoapClient soapClient) { var editValues = "Edit Values"; var editSettings = "Edit Settings"; var editPermissions = "Edit Permissions"; var moveFolder = "Move Folder"; var done = "Done"; while (true) { var menu = GetChooseMenu(editValues, editSettings, editPermissions, moveFolder, done); if (menu == null) { return(true); } if (menu == done) { break; } var isValueChange = menu == editValues; if (isValueChange) { ChangeItemValues(secret); } else if (menu == editSettings) { ChangeSettings(secret, token, soapClient); } else if (menu == editPermissions) { ChangePermissions(secret.FolderId > 0, secret); } else if (menu == moveFolder) { var folder = GetFolder(account, token); if (folder != null) { secret.FolderId = folder.Id; } } } return(false); }
/// <summary> /// Example on how to validate a token /// </summary> public void ValidateTokenIsStillValid() { //Use a basic HTTP binding for SOAP. var binding = new BasicHttpBinding(); //Create an endpoint for the URI. var endpoint = new EndpointAddress(_webserviceURL); var soapClient = new SSWebServiceSoapClient(binding, endpoint); var authenticateResult = soapClient.Authenticate("theUserName", "thePassword", string.Empty, string.Empty); //Assume authentication was successful. var token = authenticateResult.Token; var isValidTokenResult = soapClient.GetTokenIsValid(token); if (isValidTokenResult.Errors.Length == 0) { //Token is still valid } else { //Token is invalid. The Errors property on isValidTokenResult contains the reason. } }
public void SearchSecrets() { //Use a basic HTTP binding for SOAP. var binding = new BasicHttpBinding(); //Create an endpoint for the URI. var endpoint = new EndpointAddress(_webserviceURL); var soapClient = new SSWebServiceSoapClient(binding, endpoint); var result = soapClient.Authenticate("theUserName", "thePassword", string.Empty, string.Empty); if (result.Errors.Length > 0) { //Authentication failed. The Errors array contains the reason(s). } //Successful else { var token = result.Token; //Search for all secrets that contain "Hello" in them. var searchResult = soapClient.SearchSecretsLegacy(token, "Hello"); if (searchResult.Errors.Length > 0) { //Failed to get the secret. The Errors array contains the reason(s). } else { foreach (var summary in searchResult.SecretSummaries) { //The Secret's name var secretName = summary.SecretName; //The name of the Template var templateName = summary.SecretTypeName; //The ID of the Secret. Can be used in GetSecret to obtain more information var secretId = summary.SecretId; } } } }