Пример #1
0
        /// <summary>
        /// Determines whether or not an affiliate application exists.
        /// </summary>
        /// <param name="application">The name of the affiliate application to check for existence.</param>
        public bool Exists(string application)
        {
            bool   exists      = false;
            string description = "";
            string contact     = "";
            string userGroup   = "";
            string adminGroup  = "";
            int    flags       = 0;
            int    fields      = 0;

            try
            {
                ISSOAdmin ssoAdmin = new ISSOAdmin();
                ssoAdmin.GetApplicationInfo(application, out description, out contact, out userGroup, out adminGroup, out flags, out fields);
                exists = true;
            }
            catch (Exception e)
            {
                if (e.Message.Contains("The application does not exist."))
                {
                    exists = false;
                }
                else
                {
                    throw new Exception("Failed to load information for affiliate application " + application + ". " + e.Message);
                }
            }
            return(exists);
        }
Пример #2
0
        /// <summary>
        /// execute task
        /// </summary>
        /// <returns></returns>
        public override bool Execute()
        {
            var admin = new ISSOAdmin();

            admin.DeleteApplication(ApplicationName);
            return(true);
        }
Пример #3
0
        /// <summary>
        /// Enables tickets
        /// </summary>
        /// <returns>True if successful, otherwise false</returns>
        public static bool EnableTickets()
        {
            try
            {
                ISSOAdmin admin = new ISSOAdmin();

                int    flags                = 0;
                int    appDeleteMax         = -1;
                int    mappingDeleteMax     = -1;
                int    ntpLookupMax         = -1;
                int    xplLookupMax         = -1;
                int    ticketTimeout        = -1;
                int    cacheTimeout         = -1;
                string secretServer         = null;
                string ssoAdminGroup        = null;
                string affiliateAppMgrGroup = null;

                // Get current default settings
                admin.GetGlobalInfo(out flags, out appDeleteMax, out mappingDeleteMax, out ntpLookupMax,
                                    out xplLookupMax, out ticketTimeout, out cacheTimeout, out secretServer,
                                    out ssoAdminGroup, out affiliateAppMgrGroup);

                // Update global settings
                admin.UpdateGlobalInfo(SSOFlag.SSO_FLAG_ALLOW_TICKETS | SSOFlag.SSO_FLAG_VALIDATE_TICKETS,
                                       SSOFlag.SSO_FLAG_ALLOW_TICKETS | SSOFlag.SSO_FLAG_VALIDATE_TICKETS,
                                       ref appDeleteMax, ref mappingDeleteMax, ref ntpLookupMax,
                                       ref xplLookupMax, ref ticketTimeout, ref cacheTimeout, null, null, null);
            }
            catch
            {
                return(false);
            }

            return(true);
        }
Пример #4
0
        /// <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, "", 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);
        }
Пример #5
0
        /// <summary>
        /// Adds SSO application
        /// </summary>
        /// <param name="name">Application name</param>
        /// <param name="admins">Application admin group</param>
        /// <param name="users">Application users group</param>
        /// <returns>True if successful, otherwise false</returns>
        public static bool AddApplication(string name, string admins, string users)
        {
            try
            {
                ISSOAdmin admin = new ISSOAdmin();

                // Create application
                admin.CreateApplication(name, "SSO Sample Application",
                                        "*****@*****.**", users, admins,
                                        SSOFlag.SSO_WINDOWS_TO_EXTERNAL | SSOFlag.SSO_FLAG_ALLOW_TICKETS | SSOFlag.SSO_FLAG_VALIDATE_TICKETS, 2);

                // Add fields
                admin.CreateFieldInfo(name, "User Id", SSOFlag.SSO_FLAG_NONE);
                admin.CreateFieldInfo(name, "Password", SSOFlag.SSO_FLAG_FIELD_INFO_MASK);

                // Enable application
                admin.UpdateApplication(name, null, null, null, null, SSOFlag.SSO_FLAG_ENABLED, SSOFlag.SSO_FLAG_ENABLED);
            }
            catch
            {
                return(false);
            }

            return(true);
        }
Пример #6
0
        /// <summary>
        /// Imports the specified SSO config file to BizTalk SSODB.
        /// </summary>
        /// <param name="ssoKey">Key to import SSO file.</param>
        /// <param name="ssoEncryptedFile">Full path of the SSO config file, from where to import.</param>
        /// <param name="ssoConfigappName">Application name under which the SSO will be imported.</param>
        /// <param name="SSOConfigContactInfo">SSOConfigContactInfo , which will make the config visible in SSO Admin mmc. The name has to be the one which was specified while installing Microsoft SSO MMC snapIn tool.</param>
        /// <param name="redeploy">Boolean, Redeploy flag (True: Deletes existing SSO and imports the new, False : Imports the new SSO without deleting previous one).</param>
        /// <returns>Returns true/fasle.</returns>
        public static bool ImportSSOconfig(string ssoKey, string ssoEncryptedFile, string ssoConfigappName, string SSOConfigContactInfo, bool redeploy,
                                           out string exceptionMessage)
        {
            bool result = false;

            try
            {
                exceptionMessage = string.Empty;
                ISSOAdmin ssoAdmin = new ISSOAdmin();
                if (redeploy)
                {
                    ssoAdmin.DeleteApplication(ssoConfigappName);
                }
                MSBuildTasks.ImportSSOConfigurationApplicationTask import = new MSBuildTasks.ImportSSOConfigurationApplicationTask();
                import.EncryptionKey = ssoKey;
                import.EncryptedFile = ssoEncryptedFile;
                result = import.Execute();
                if (result)
                {
                    ssoAdmin.UpdateSSOCompanyName(ssoConfigappName, SSOConfigContactInfo);
                }
            }
            catch (Exception exe)
            {
                exceptionMessage = exe.Message;
                result           = false;
            }
            return(result);
        }
Пример #7
0
        /// <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();

            try
            {
                configStore.GetConfigInfo(appName, idenifierGUID, SSOFlag.SSO_FLAG_RUNTIME, propertiesBag);
            }
            catch (COMException e)
            {
                if (!e.Message.StartsWith("The application is currently disabled."))
                {
                    throw;
                }
            }

            return(propertiesBag.properties);
        }
        /// <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);
        }
Пример #9
0
        internal static void DeleteApp(string appName)
        {
            if (AppExists(appName))
            {
                DeleteConfigInfo(appName);

                ISSOAdmin ssoAdmin = new ISSOAdmin();
                ssoAdmin.DeleteApplication(appName);
            }
        }
Пример #10
0
        /// <summary>
        /// Deletes an <see cref="AffiliateApplication"/> from the Enterprise Single Sign-On (SSO) server database.
        /// </summary>
        public void Delete()
        {
            if (!HasOwnership || _lazyConfigStoreCollection.Value.ContainsForeignConfigStores)
            {
                throw new InvalidOperationException(
                          $"To prevent any destructive effects, BizTalk.Factory will not delete an {nameof(AffiliateApplication)} "
                          + $"that it has not created or that has other {nameof(ConfigStore)}s than the default one.");
            }
            var ssoAdmin = new ISSOAdmin();

            ssoAdmin.DeleteApplication(Name);
        }
 private void EnableApplication(string appName, ISSOAdmin admin)
 {
     try
     {
         int num = 2;
         admin.UpdateApplication(appName, null, null, null, null, num, num);
     }
     catch (Exception ex)
     {
         EventLog.WriteEntry("SSOConfigCmdTool - EnableApplication", ex.Message);
     }
 }
        private void EnsureSettingsFieldExists()
        {
            if (_settingsFieldExists)
            {
                return;
            }
            var ssoAdmin = new ISSOAdmin();

            ssoAdmin.CreateFieldInfo(_affiliateApplicationName, AffiliateApplication.DEFAULT_SETTINGS_KEY, SSOFlag.SSO_FLAG_NONE);
            ssoAdmin.UpdateApplication(_affiliateApplicationName, null, null, null, null, SSOFlag.SSO_FLAG_ENABLED, SSOFlag.SSO_FLAG_ENABLED);
            _settingsFieldExists = true;
        }
Пример #13
0
 private void EnableApplication(string appName, ISSOAdmin admin)
 {
     try
     {
         int num = 2;
         admin.UpdateApplication(appName, null, null, null, null, num, num);
         DoSsoEvent("EnableApplication", string.Format("{0} enabled", appName), false);
     }
     catch (Exception ex)
     {
         DoSsoEvent("SSO Helper - EnableApplication", ex.Message, true);
     }
 }
Пример #14
0
 /// <summary>
 /// Create an SSO application.
 /// </summary>
 /// <param name="application">The name of the affiliate application.</param>
 /// <param name="type">The type of affiliate application.</param>
 /// <param name="description">A description for the affiliate application.</param>
 /// <param name="contact">Contact information for administering the affiliate application.</param>
 /// <param name="userGroup">The windows group for users that will use the affiliate application.</param>
 /// <param name="adminGroup">The windows group for administrators of the affiliate application.</param>
 /// <param name="tickets">A flag indicating if the affiliate application can be used to create SSO tickets.</param>
 /// <param name="local">A flag indicating whether or not local user accounts can use the affiliate application.</param>
 public void Create(string application, AffiliateApplicationType type, string description, string contact, string userGroup, string adminGroup, bool tickets, bool local)
 {
     try
     {
         int flags  = 0;
         int fields = 2;
         // Set flags.
         if (type == AffiliateApplicationType.Individual)
         {
             flags = SSOFlag.SSO_FLAG_SSO_WINDOWS_TO_EXTERNAL;
         }
         else if (type == AffiliateApplicationType.Group)
         {
             flags = SSOFlag.SSO_WINDOWS_TO_EXTERNAL;
             flags = flags | SSOFlag.SSO_FLAG_APP_GROUP;
             flags = flags | SSOFlag.SSO_FLAG_APP_USES_GROUP_MAPPING;
         }
         else if (type == AffiliateApplicationType.HostGroup)
         {
             flags = SSOFlag.SSO_EXTERNAL_TO_WINDOWS;
             flags = flags | SSOFlag.SSO_FLAG_APP_GROUP;
             flags = flags | SSOFlag.SSO_FLAG_APP_USES_GROUP_MAPPING;
         }
         else
         {
             throw new Exception("Unsupported affiliate application type: " + type.ToString() + ".");
         }
         if (tickets)
         {
             flags = flags | SSOFlag.SSO_FLAG_ALLOW_TICKETS | SSOFlag.SSO_FLAG_VALIDATE_TICKETS;
         }
         if (local)
         {
             flags = flags | SSOFlag.SSO_FLAG_APP_ALLOW_LOCAL;
         }
         // Create the application
         ISSOAdmin ssoAdmin = new ISSOAdmin();
         ssoAdmin.CreateApplication(application, description, contact, userGroup, adminGroup, flags, fields);
         // Create fields used by the application
         flags = 0;
         ssoAdmin.CreateFieldInfo(application, "User ID", flags);
         flags = SSOFlag.SSO_FLAG_FIELD_INFO_MASK | SSOFlag.SSO_FLAG_FIELD_INFO_SYNC;
         ssoAdmin.CreateFieldInfo(application, "Password", flags);
         // Enable the application
         ssoAdmin.UpdateApplication(application, null, null, null, null, SSOFlag.SSO_FLAG_ENABLED, SSOFlag.SSO_FLAG_ENABLED);
     }
     catch (Exception e)
     {
         throw new Exception("Failed to create affiliate application " + application + ". " + e.Message);
     }
 }
Пример #15
0
        // Borrowed largely from Jon Flanders' SSOAppConfigHelper object.
        internal static void CreateApp(string appName, string userGroup, string adminGroup)
        {
            const int Fields = 2;
            int       flags  = SSOFlag.SSO_FLAG_APP_CONFIG_STORE | SSOFlag.SSO_FLAG_APP_ALLOW_LOCAL | SSOFlag.SSO_FLAG_SSO_WINDOWS_TO_EXTERNAL;

            ISSOAdmin _ssoAdmin = new ISSOAdmin();

            _ssoAdmin.CreateApplication(
                appName, appName + " Configuration Data", "*****@*****.**", userGroup, adminGroup, flags, Fields);
            _ssoAdmin.CreateFieldInfo(appName, "*****@*****.**", SSOFlag.SSO_FLAG_NONE);
            _ssoAdmin.CreateFieldInfo(appName, PropName, SSOFlag.SSO_FLAG_NONE);

            _ssoAdmin.UpdateApplication(appName, null, null, null, null, SSOFlag.SSO_FLAG_ENABLED, SSOFlag.SSO_FLAG_ENABLED);
        }
Пример #16
0
        private void save(string name)
        {
            SSOPropBag propertiesBag = new SSOPropBag();

            ISSOAdmin a = new ISSOAdmin();

            string appUserAcct, appAdminAcct, description, contactInfo;

            HybridDictionary props = SSOConfigManager.GetConfigProperties(tvApps.SelectedNode.Text, out description, out contactInfo, out appUserAcct, out appAdminAcct);

            foreach (DataGridViewRow row in dgvSearch.Rows)
            {
                if (row.Cells[0].Value != null)
                {
                    if (row.Cells[1].Value == null)
                    {
                        MessageBox.Show("The key value cannot be blank!", "Blank key value", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        return;
                    }

                    //set values
                    string propName     = row.Cells[0].Value.ToString();
                    object objPropValue = row.Cells[1].Value;

                    propertiesBag.Write(propName, ref objPropValue);

                    if (!props.Contains(propName))
                    {
                        a.CreateFieldInfo(tvApps.SelectedNode.Text, propName, 0);
                    }
                }
            }

            UpdateSSOApplication(name, name);
            //didn't work properly in BTS2013R2
            //a.UpdateApplication(tvApps.SelectedNode.Text, null, null, null, null, SSOFlag.SSO_FLAG_ENABLED, SSOFlag.SSO_FLAG_ENABLED);

            try
            {
                SSOConfigManager.SetConfigProperties(tvApps.SelectedNode.Text, propertiesBag);

                MessageBox.Show("Properties saved successfully.", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            catch (Exception ex)
            {
                MessageBox.Show("Error Occured.  Details: " + ex.ToString(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
Пример #17
0
        internal static bool AppExists(string appName)
        {
            string description, contact, grpName, grpAdmin;
            int    flags, fields;

            ISSOAdmin ssoAdmin = new ISSOAdmin();

            try
            {
                ssoAdmin.GetApplicationInfo(appName, out description, out contact, out grpName, out grpAdmin, out flags, out fields);
                return(true);
            }
            catch { }

            return(false);
        }
 public void DeleteApplication(string appName)
 {
     try
     {
         using (TransactionScope transactionScope = new TransactionScope())
         {
             ISSOAdmin iSSOAdmin = (ISSOAdmin) new SSOAdmin();
             this.Enlist(iSSOAdmin, Transaction.Current);
             iSSOAdmin.DeleteApplication(appName);
             transactionScope.Complete();
         }
     }
     catch (Exception ex)
     {
         EventLog.WriteEntry("SSOConfigCmdTool - DeleteApplication", ex.Message);
     }
 }
 private void CreateApplicationFields(string appName, ISSOAdmin admin, string[] arrKeys)
 {
     try
     {
         int flags = 536870912;
         int num   = arrKeys.Length;
         admin.CreateFieldInfo(appName, string.Format("biztalkadmin@{0}.com", strCompany), flags);
         for (int i = 0; i < num; i++)
         {
             admin.CreateFieldInfo(appName, arrKeys[i].ToString(), flags);
         }
     }
     catch (Exception ex)
     {
         EventLog.WriteEntry("SSOConfigCmdTool - CreateApplicationFields", ex.Message);
     }
 }
Пример #20
0
 private void CreateApplicationFields(string appName, ISSOAdmin admin, string[] arrKeys)
 {
     try
     {
         int flags = 536870912;
         int num   = arrKeys.Length;
         admin.CreateFieldInfo(appName, _bizTalkEmailAddress, flags);
         for (int i = 0; i < num; i++)
         {
             admin.CreateFieldInfo(appName, arrKeys[i].ToString(), flags);
             DoSsoEvent("CreateApplicationFields", string.Format("{0}", arrKeys[i]), false);
         }
     }
     catch (Exception ex)
     {
         DoSsoEvent("SSO Helper - CreateApplicationFields", ex.Message, true);
     }
 }
Пример #21
0
        /// <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>
        private 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);
        }
Пример #22
0
        public static void CreateConfigStoreApplication(string appName, string description, string uAccountName, string adminAccountName, SSOPropBag propertiesBag, ArrayList maskArray)
        {
            int       flags1   = 0 | 1048576 | 4 | 262144;
            ISSOAdmin ssoAdmin = (ISSOAdmin) new SSOAdmin();

            ssoAdmin.CreateApplication(appName, description, "", uAccountName, adminAccountName, flags1, propertiesBag.PropertyCount);
            int index = 0;

            ssoAdmin.CreateFieldInfo(appName, "dummy", 0);
            foreach (DictionaryEntry property in propertiesBag.properties)
            {
                string label  = property.Key.ToString();
                int    flags2 = 0 | Convert.ToInt32(maskArray[index]);
                ssoAdmin.CreateFieldInfo(appName, label, flags2);
                ++index;
            }
            ssoAdmin.UpdateApplication(appName, (string)null, (string)null, (string)null, (string)null, 2, 2);
        }
Пример #23
0
 public void DeleteApplication(string appName)
 {
     try
     {
         using (TransactionScope transactionScope = new TransactionScope())
         {
             ISSOAdmin iSSOAdmin = (ISSOAdmin) new SSOAdmin();
             Enlist(iSSOAdmin, Transaction.Current);
             iSSOAdmin.DeleteApplication(appName);
             transactionScope.Complete();
             DoSsoEvent("DeleteApplication", string.Format("{0}", appName), false);
         }
     }
     catch (Exception ex)
     {
         DoSsoEvent("SSO Helper - DeleteApplication", ex.Message, true);
     }
 }
Пример #24
0
        public static AffiliateApplication Create(
            string name,
            string userGroup          = DEFAULT_USER_GROUP_NAME,
            string administratorGroup = DEFAULT_ADMINISTRATOR_GROUP_NAME,
            string description        = null
            )
        {
            if (name.IsNullOrEmpty())
            {
                throw new ArgumentNullException(nameof(name));
            }
            if (name.Contains(' '))
            {
                throw new ArgumentException("Name cannot contain spaces.", nameof(name));
            }
            if (FindByName(name) != null)
            {
                throw new ArgumentException($"{nameof(AffiliateApplication)} '{name}' already exists and cannot be duplicated.", nameof(name));
            }

            var application = new AffiliateApplication {
                Name = name,
                AdministratorGroup = administratorGroup ?? DEFAULT_ADMINISTRATOR_GROUP_NAME,
                Contact            = DEFAULT_CONTACT_INFO,
                Description        = description ?? $"{name} Configuration Store",
                UserGroup          = userGroup ?? DEFAULT_USER_GROUP_NAME
            };

            var ssoAdmin = new ISSOAdmin();

            ssoAdmin.CreateApplication(
                application.Name,
                application.Description,
                application.Contact,
                application.UserGroup,
                application.AdministratorGroup,
                SSOFlag.SSO_FLAG_APP_CONFIG_STORE | SSOFlag.SSO_FLAG_APP_ALLOW_LOCAL | SSOFlag.SSO_FLAG_SSO_WINDOWS_TO_EXTERNAL,
                1);

            ssoAdmin.CreateFieldInfo(name, application.Contact, SSOFlag.SSO_FLAG_NONE);
            ssoAdmin.UpdateApplication(name, null, null, null, null, SSOFlag.SSO_FLAG_ENABLED, SSOFlag.SSO_FLAG_ENABLED);

            return(application);
        }
        public static AffiliateApplication Create(
            string name,
            string[] administratorGroups = null,
            string[] userGroups          = null,
            string description           = null)
        {
            if (name.IsNullOrEmpty())
            {
                throw new ArgumentNullException(nameof(name));
            }
            if (name.Contains(' '))
            {
                throw new ArgumentException("Name cannot contain spaces.", nameof(name));
            }
            if (FindByName(name) != null)
            {
                throw new ArgumentException($"{nameof(AffiliateApplication)} '{name}' already exists and cannot be duplicated.", nameof(name));
            }

            var application = new AffiliateApplication {
                Name = name,
                AdministratorGroups = administratorGroups ?? DefaultAdministratorGroups,
                Contact             = DEFAULT_CONTACT_INFO,
                Description         = description ?? $"{name} Configuration Store",
                UserGroups          = userGroups ?? DefaultUserGroups
            };

            var ssoAdmin = new ISSOAdmin();

            ssoAdmin.CreateApplication(
                application.Name,
                application.Description,
                application.Contact,
                application.UserGroups.JoinGroups(),
                application.AdministratorGroups.JoinGroups(),
                SSOFlag.SSO_FLAG_APP_CONFIG_STORE | SSOFlag.SSO_FLAG_APP_ALLOW_LOCAL | SSOFlag.SSO_FLAG_SSO_WINDOWS_TO_EXTERNAL,
                2 /* number of fields to be created */);
            ssoAdmin.CreateFieldInfo(name, application.Contact, SSOFlag.SSO_FLAG_NONE);
            ssoAdmin.CreateFieldInfo(name, DEFAULT_SETTINGS_KEY, SSOFlag.SSO_FLAG_NONE);
            ssoAdmin.UpdateApplication(name, null, null, null, null, SSOFlag.SSO_FLAG_ENABLED, SSOFlag.SSO_FLAG_ENABLED);

            return(application);
        }
 /// <summary>
 /// Finds and returns an <see cref="AffiliateApplication"/> by name in the Enterprise Single Sign-On (SSO) server
 /// database.
 /// </summary>
 /// <param name="name">
 /// The name of the <see cref="AffiliateApplication"/> to find in Enterprise Single Sign-On (SSO) server database.
 /// </param>
 /// <returns>
 /// The <see cref="AffiliateApplication"/> currently deployed in the Enterprise Single Sign-On (SSO) server database.
 /// <c>null</c> if the <see cref="AffiliateApplication"/> does not exist in Enterprise Single Sign-On (SSO) server
 /// database.
 /// </returns>
 public static AffiliateApplication FindByName(string name)
 {
     try
     {
         var ssoAdmin = new ISSOAdmin();
         ssoAdmin.GetApplicationInfo(name, out var description, out var contact, out var userGroupName, out var adminGroupName, out _, out _);
         return(new AffiliateApplication {
             Name = name, Contact = contact, Description = description, AdministratorGroup = adminGroupName, UserGroup = userGroupName
         });
     }
     catch (COMException exception)
     {
         if ((uint)exception.ErrorCode == (uint)HResult.ErrorApplicationNonExistent)
         {
             return(null);
         }
         throw;
     }
 }
Пример #27
0
 /// <summary>
 /// Deletes an SSO affiliate application.
 /// </summary>
 /// <param name="application">The name of the affiliate application to be deleted.</param>
 public void Delete(string application)
 {
     try
     {
         if (!Exists(application))
         {
             throw new Exception("The application does not exist.");
         }
         else
         {
             ISSOAdmin ssoAdmin = new ISSOAdmin();
             ssoAdmin.DeleteApplication(application);
         }
     }
     catch (Exception e)
     {
         throw new Exception("Failed to delete application " + application + ". " + e.Message);
     }
 }
Пример #28
0
 /// <summary>
 /// Finds and returns an <see cref="AffiliateApplication"/> by name in the Enterprise Single Sign-On (SSO) server
 /// database.
 /// </summary>
 /// <param name="name">
 /// The name of the <see cref="AffiliateApplication"/> to find in Enterprise Single Sign-On (SSO) server database.
 /// </param>
 /// <returns>
 /// The <see cref="AffiliateApplication"/> currently deployed in the Enterprise Single Sign-On (SSO) server database.
 /// <c>null</c> if the <see cref="AffiliateApplication"/> does not exist in Enterprise Single Sign-On (SSO) server
 /// database.
 /// </returns>
 public static AffiliateApplication FindByName(string name)
 {
     try
     {
         var ssoAdmin = new ISSOAdmin();
         ssoAdmin.GetApplicationInfo(name, out var description, out var contact, out var userGroupName, out var adminGroupName, out _, out _);
         return(new AffiliateApplication {
             Name = name, Contact = contact, Description = description, AdministratorGroup = adminGroupName, UserGroup = userGroupName
         });
     }
     catch (COMException exception)
     {
         // Error Code = 'The application does not exist.'
         // see https://weblog.west-wind.com/posts/2007/Apr/18/C-HRESULT-comparison
         if ((uint)exception.ErrorCode == 0xC0002A04)
         {
             return(null);
         }
         throw;
     }
 }
 public void CreateApplication(string name, string[] arrKeys)
 {
     try
     {
         using (TransactionScope transactionScope = new TransactionScope())
         {
             int       numFields = arrKeys.Length;
             int       flags     = 1310720;
             ISSOAdmin iSSOAdmin = (ISSOAdmin) new SSOAdmin();
             this.Enlist(iSSOAdmin, Transaction.Current);
             iSSOAdmin.CreateApplication(name, name + " Configuration Data", string.Format("biztalkadmin@{0}.com", strCompany), this.strAffiliateAppMgrGroup, this.strSSOAdminGroup, flags, numFields);
             this.CreateApplicationFields(name, iSSOAdmin, arrKeys);
             this.EnableApplication(name, iSSOAdmin);
             transactionScope.Complete();
         }
     }
     catch (Exception ex)
     {
         EventLog.WriteEntry("SSOConfigCmdTool - CreateApplication", ex.Message);
     }
 }
        /// <summary>
        /// Check to see if the current user has SSO Administrator permissions.
        /// </summary>
        /// <returns>
        /// True if the current user has SSO Administrator permissions, or
        /// false otherwise.
        /// </returns>
        private static void CheckSSOPermissions()
        {
            // Try and get the global info from SSO
            try
            {
                int       flags;
                int       auditAppDeleteMax;
                int       auditMappingDeleteMax;
                int       auditNtpLookupMax;
                int       auditXpLookupMax;
                int       ticketTimeout;
                int       credCacheTimeout;
                string    secretServer;
                string    SSOAdminGroup;
                string    affiliateAppMgrGroup;
                ISSOAdmin admin = new ISSOAdmin();
                // Microsoft.BizTalk.SSOClient.Interop.ISSOAdmin admin = new Microsoft.BizTalk.SSOClient.Interop.ISSOAdmin();
                admin.GetGlobalInfo(
                    out flags,
                    out auditAppDeleteMax,
                    out auditMappingDeleteMax,
                    out auditNtpLookupMax,
                    out auditXpLookupMax,
                    out ticketTimeout,
                    out credCacheTimeout,
                    out secretServer,
                    out SSOAdminGroup,
                    out affiliateAppMgrGroup);
            }
            catch (UnauthorizedAccessException ex)
            {
                TraceManager.SmartTrace.TraceError(ex);

                // Failed so we don't have the correct permissions
                throw new ApplicationException(string.Format(
                                                   @"The current user '\\{0}\{1}' failed to connect to the BizTalk management database.",
                                                   Environment.UserDomainName,
                                                   Environment.UserName));
            }
        }
Пример #31
0
 public void CreateApplication(string name, string[] arrKeys)
 {
     try
     {
         using (TransactionScope transactionScope = new TransactionScope())
         {
             int       numFields = arrKeys.Length;
             int       flags     = 1310720;
             ISSOAdmin iSSOAdmin = (ISSOAdmin) new SSOAdmin();
             Enlist(iSSOAdmin, Transaction.Current);
             iSSOAdmin.CreateApplication(name, name + " Configuration Data", _bizTalkEmailAddress, _affiliateAppMgrGroup, _ssoAdminGroup, flags, numFields);
             DoSsoEvent("CreateApplication", string.Format("{0}", name), false);
             CreateApplicationFields(name, iSSOAdmin, arrKeys);
             EnableApplication(name, iSSOAdmin);
             transactionScope.Complete();
         }
     }
     catch (Exception ex)
     {
         DoSsoEvent("SSO Helper - CreateApplication", ex.Message, true);
     }
 }
        /// <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;
        }
        /// <summary>
        /// Remove the application
        /// </summary>
        /// <param name="appName"></param>
        public static void DeleteApplication(string appName)
        {
            ISSOAdmin ssoAdmin = new ISSOAdmin();

            ssoAdmin.DeleteApplication(appName);
        }