/// <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;
        }
Esempio n. 3
0
    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;
        }