/// <summary> /// Creates a new SSO ConfigStore application. /// </summary> /// <param name="appName"></param> /// <param name="description"></param> /// <param name="uAccountName"></param> /// <param name="adminAccountName"></param> /// <param name="propertiesBag"></param> /// <param name="maskArray"></param> public static void CreateConfigStoreApplication(string appName, string description, string uAccountName, string adminAccountName, SSOPropBag propertiesBag, ArrayList maskArray) { int appFlags = 0; //bitwise operation for flags appFlags |= SSOFlag.SSO_FLAG_APP_CONFIG_STORE; appFlags |= SSOFlag.SSO_FLAG_SSO_WINDOWS_TO_EXTERNAL; appFlags |= SSOFlag.SSO_FLAG_APP_ALLOW_LOCAL; ISSOAdmin ssoAdmin = new ISSOAdmin(); //create app ssoAdmin.CreateApplication(appName, description, "ControlCenter", uAccountName, adminAccountName, appFlags, propertiesBag.PropertyCount); //create property fields int counter = 0; //create dummy field in first slot ssoAdmin.CreateFieldInfo(appName, "dummy", 0); //create real fields foreach (DictionaryEntry de in propertiesBag.properties) { string propName = de.Key.ToString(); int fieldFlags = 0; fieldFlags |= Convert.ToInt32(maskArray[counter]); //create property ssoAdmin.CreateFieldInfo(appName, propName, fieldFlags); counter++; } //enable application ssoAdmin.UpdateApplication(appName, null, null, null, null, SSOFlag.SSO_FLAG_ENABLED, SSOFlag.SSO_FLAG_ENABLED); }
/// <summary> /// Retrieve dictionary of field/value pairs /// </summary> /// <param name="appName"></param> /// <param name="description"></param> /// <param name="contactInfo"></param> /// <param name="appUserAcct"></param> /// <param name="appAdminAcct"></param> /// <returns></returns> public static HybridDictionary GetConfigProperties(string appName, out string description, out string contactInfo, out string appUserAcct, out string appAdminAcct) { int flags; int count; //get config info ISSOAdmin ssoAdmin = new ISSOAdmin(); ssoAdmin.GetApplicationInfo(appName, out description, out contactInfo, out appUserAcct, out appAdminAcct, out flags, out count); //get properties ISSOConfigStore configStore = new ISSOConfigStore(); SSOPropBag propertiesBag = new SSOPropBag(); configStore.GetConfigInfo(appName, idenifierGUID, SSOFlag.SSO_FLAG_RUNTIME, propertiesBag); return propertiesBag.properties; }
protected void gridSSO_RowCommand(object sender, GridViewCommandEventArgs e) { try { if (e.CommandName.Equals("Insert")) { TextBox txtKeyName = gridSSO.FooterRow.FindControl("txtNewKeyName") as TextBox; TextBox txtKeyValue = gridSSO.FooterRow.FindControl("txtNewKeyValue") as TextBox; //Its found in the first cell of the first row. string applicationName = gridSSO.Rows[0].Cells[0].Text; if ((txtKeyName != null && txtKeyName.Text != string.Empty) && (txtKeyValue != null && txtKeyValue.Text != string.Empty)) { if (applicationName != null && applicationName.Length > 0) { SSOPropBag propBag = new SSOPropBag(); int rowCount = gridSSO.Rows.Count; string keyName = txtKeyName.Text; object keyValue = txtKeyValue.Text; propBag.Write(keyName, ref keyValue); string[] propNames = new string[rowCount + 1]; object[] propValues = new object[rowCount + 1]; Label gridKeyLabel = null; Label gridValueLabel = null; int loopCount = 0; for (loopCount = 0; loopCount < rowCount; loopCount++) { gridKeyLabel = gridSSO.Rows[loopCount].FindControl("lblKeyName") as Label; gridValueLabel = gridSSO.Rows[loopCount].FindControl("lblKeyValue") as Label; propNames[loopCount] = gridKeyLabel.Text; propValues[loopCount] = gridValueLabel.Text; propBag.Write(propNames[loopCount], ref propValues[loopCount]); } // Finally update every thing. SSOConfigManager.DeleteApplication(applicationName); SSOConfigManager.CreateConfigStoreApplication(applicationName, "ControlCenter", "BizTalk Application Users", "BizTalk Server Administrators", propBag, null); } } } } catch (Exception exception) { DisplayError("SSO Insert: " + exception.Message); } }
/// <summary> /// Set values for application fields /// </summary> /// <param name="appName"></param> /// <param name="propertyBag"></param> public static void SetConfigProperties(string appName, SSOPropBag propertyBag) { ISSOConfigStore configStore = new ISSOConfigStore(); configStore.SetConfigInfo(appName, idenifierGUID, propertyBag); }
/// <summary> /// /// </summary> /// <param name="path"></param> public static string LoadSSOConfigXml(XmlDocument configDoc) { string appName = configDoc.SelectSingleNode("//application/@name").InnerText; string description = configDoc.SelectSingleNode("//description").InnerText; string appUserAcct = configDoc.SelectSingleNode("//appUserAccount").InnerText; string appAdminAcct = configDoc.SelectSingleNode("//appAdminAccount").InnerText; //grab fields XmlNodeList fields = configDoc.SelectNodes("//field"); SSOPropBag propertiesBag = new SSOPropBag(); ArrayList maskArray = new ArrayList(); string label = string.Empty; string masked = string.Empty; string fieldValue = string.Empty; foreach (XmlNode field in fields) { label = field.Attributes["label"].InnerText; masked = field.Attributes["masked"].InnerText; if (label != null && label.Length > 0) { fieldValue = field.InnerText; if (fieldValue == null || fieldValue == string.Empty) { fieldValue = "none"; } //set values object objPropValue = fieldValue; propertiesBag.Write(label, ref objPropValue); //store mask if (masked == "yes") { maskArray.Add(SSOFlag.SSO_FLAG_FIELD_INFO_MASK); } else { maskArray.Add(0); } } } // First delete the application and then create a new one. try { SSOConfigManager.DeleteApplication(appName); } catch (Exception exception) { System.Diagnostics.Debug.Write(exception.Message, "BCC.Core.SSOConfigHelper"); } //create and enable application SSOConfigManager.CreateConfigStoreApplication(appName, description, appUserAcct, appAdminAcct, propertiesBag, maskArray); //set default configuration field values SSOConfigManager.SetConfigProperties(appName, propertiesBag); return appName; }