/// <summary>
        /// Updates the specified application including both, metadata information
        /// and fields.
        /// </summary>
        /// <param name="appConfig">Configuration information used to update the application.</param>
        /// <param name="recreate">Value indicating wheter to recreate the application.</param>
        public static void UpdateApplication(SSOAppConfig appConfig, bool recreate)
        {
            using (TransactionScope transactionScope = new TransactionScope())
            {
                // create SSO objects
                ISSOAdmin2      ssoAdmin       = new ISSOAdmin2();
                ISSOConfigStore ssoConfigStore = new ISSOConfigStore();

                // enlist them in the transaction
                SSOManager.Enlist(ssoAdmin as IPropertyBag, Transaction.Current);
                SSOManager.Enlist(ssoConfigStore as IPropertyBag, Transaction.Current);

                // check if the application needs to be recreated or just updated
                if (recreate == true)
                {
                    // delete and recreate
                    SSOManager.DeleteApplication(ssoAdmin, appConfig.AppInfo.Name);
                    SSOManager.CreateApplication(ssoAdmin, appConfig);
                }
                else
                {
                    // just update the application metadata
                    SSOManager.UpdateApplicationInfo(ssoAdmin, appConfig.AppInfo);
                }

                // update the application fields
                ssoConfigStore.SetConfigInfo(appConfig.AppInfo.Name, SSOManager.ConfigIdentifier, appConfig.AppFields);
                // commit the transaction
                transactionScope.Complete();
            }
        }
        /// <summary>
        /// Loads the SSO server information.
        /// </summary>
        private static void LoadSSOServerInfo()
        {
            try
            {
                int flags;
                int auditAppDeleteMax;
                int auditMappingDeleteMax;
                int auditNtpLookupMax;
                int auditXpLookupMax;
                int ticketTimeout;
                int credCacheTimeout;

                ISSOAdmin2 ssoAdmin = new ISSOAdmin2();
                ssoAdmin.GetGlobalInfo(
                    out flags,
                    out auditAppDeleteMax,
                    out auditMappingDeleteMax,
                    out auditNtpLookupMax,
                    out auditXpLookupMax,
                    out ticketTimeout,
                    out credCacheTimeout,
                    out SSOManager.SSOSecrectServer,
                    out SSOManager.SSOAdminAccounts,
                    out SSOManager.SSOAffiliateAdminAccounts);

                SSOManager.SSODBServer = Registry.GetValue("HKEY_LOCAL_MACHINE\\Software\\Microsoft\\ENTSSO\\SQL", "Server", "") as string;
                SSOManager.SSODatabase = Registry.GetValue("HKEY_LOCAL_MACHINE\\Software\\Microsoft\\ENTSSO\\SQL", "Database", "") as string;
            }
            catch (Exception ex)
            {
                EventLog.WriteEntry("HR - SSO MMC Snap - LoadSSOServerInfo", ex.Message);
            }
        }
        /// <summary>
        /// Enables/disables the specified application.
        /// </summary>
        /// <param name="appName">The name of the application.</param>
        /// <param name="enable">Value indicating whether to enable or disable the application.</param>
        public static void EnableApplication(string appName, bool enable)
        {
            ISSOAdmin2 ssoAdmin = new ISSOAdmin2();
            int        flagMask = SSOFlag.SSO_FLAG_ENABLED;
            int        flags    = enable ? SSOFlag.SSO_FLAG_ENABLED : SSOFlag.SSO_FLAG_NONE;

            ssoAdmin.UpdateApplication(appName, null, null, null, null, flags, flagMask);
        }
 /// <summary>
 /// Deletes the specified application.
 /// </summary>
 /// <param name="appName">The name of the application to be deleted.</param>
 public static void DeleteApplication(string appName)
 {
     using (TransactionScope transactionScope = new TransactionScope())
     {
         ISSOAdmin2 ssoAdmin = new ISSOAdmin2();
         SSOManager.Enlist(ssoAdmin as IPropertyBag, Transaction.Current);
         SSOManager.DeleteApplication(ssoAdmin, appName);
         transactionScope.Complete();
     }
 }
        /// <summary>
        /// Updates the application metadata information.
        /// </summary>
        /// <remarks>
        /// For internal use only. Assumes a TransactionScope is created before
        /// calling this method.
        /// </remarks>
        /// <param name="ssoAdmin">ISSOAdmin2 instance.</param>
        /// <param name="appInfo">Application metadata information.</param>
        private static void UpdateApplicationInfo(ISSOAdmin2 ssoAdmin, SSOAppInfo appInfo)
        {
            // create a separate instance of the SSOAppInfo object
            // to only copy the information that is updatable
            SSOAppInfo appInfoUpdate = new SSOAppInfo();

            appInfoUpdate.Description  = appInfo.Description;
            appInfoUpdate.Contact      = appInfo.Contact;
            appInfoUpdate.UserAccounts = appInfo.UserAccounts;
            if (appInfo.UseSSOAffiliateAdmins == false)
            {
                appInfoUpdate.AdminAccounts = appInfo.AdminAccounts;
            }

            // update the application
            ssoAdmin.UpdateApplication2(appInfo.Name, appInfoUpdate);
        }
 /// <summary>
 /// Retrieves the specified application metadata information from the SSO store.
 /// </summary>
 /// <param name="appName">The name of the application to retrieve.</param>
 /// <returns>The instance of the SSOAppInfo.</returns>
 public static SSOAppInfo GetApplicationInfo(string appName)
 {
     try
     {
         SSOAppInfo appInfo = new SSOAppInfo()
         {
             Name = appName
         };
         ISSOAdmin2 ssoAdmin = new ISSOAdmin2();
         ssoAdmin.GetApplicationInfo2(appName, appInfo);
         return(appInfo);
     }
     catch
     {
         return(null);
     }
 }
 public void GetSecretServerName()
 {
     try
     {
         ISSOAdmin2 iSSOAdmin = (ISSOAdmin2) new SSOAdmin();
         int        num;
         int        num2;
         int        num3;
         int        num4;
         int        num5;
         int        num6;
         int        num7;
         iSSOAdmin.GetGlobalInfo(out num, out num2, out num3, out num4, out num5, out num6, out num7, out this.strSecrectServer, out this.strSSOAdminGroup, out this.strAffiliateAppMgrGroup);
         this.strSsoDBServer = (Registry.GetValue("HKEY_LOCAL_MACHINE\\Software\\Microsoft\\ENTSSO\\SQL", "Server", "") as string);
         this.strSsoDB       = (Registry.GetValue("HKEY_LOCAL_MACHINE\\Software\\Microsoft\\ENTSSO\\SQL", "Database", "") as string);
     }
     catch (Exception ex)
     {
         EventLog.WriteEntry("SSOConfigCmdTool - GetSecretServerName", ex.Message);
     }
 }
Exemple #8
0
 public void GetSecretServerName()
 {
     try
     {
         ISSOAdmin2 iSSOAdmin = (ISSOAdmin2) new SSOAdmin();
         int        flags;
         int        auditAppDeleteMax;
         int        auditMappingDeleteMax;
         int        auditNtpLookupMax;
         int        auditXpLookupMax;
         int        ticketTimeout;
         int        credCacheTimeout;
         iSSOAdmin.GetGlobalInfo(out flags, out auditAppDeleteMax, out auditMappingDeleteMax, out auditNtpLookupMax, out auditXpLookupMax, out ticketTimeout, out credCacheTimeout, out _secrectServer, out _ssoAdminGroup, out _affiliateAppMgrGroup);
         _ssoDBServer = (Registry.GetValue("HKEY_LOCAL_MACHINE\\Software\\Microsoft\\ENTSSO\\SQL", "Server", "") as string);
         _ssoDB       = (Registry.GetValue("HKEY_LOCAL_MACHINE\\Software\\Microsoft\\ENTSSO\\SQL", "Database", "") as string);
         DoSsoEvent("GetSecretServerName", string.Format("Server={0}, Database={1}", _ssoDBServer, _ssoDB), false);
     }
     catch (Exception ex)
     {
         DoSsoEvent("SSO Helper - GetSecretServerName", ex.Message, true);
     }
 }
        /// <summary>
        /// Creates a new application in the SSO store using specified
        /// ISSOAdmin2 object instance and the configuration information.
        /// Creates both, the application and fields.
        /// </summary>
        /// <remarks>
        /// For internal use only. Assumes a TransactionScope is created before
        /// calling this method.
        /// </remarks>
        /// <param name="ssoAdmin">ISSOAdmin2 instance.</param>
        /// <param name="appConfig">Configuration information used to create the application.</param>
        private static void CreateApplication(ISSOAdmin2 ssoAdmin, SSOAppConfig appConfig)
        {
            // set default contact
            appConfig.AppInfo.Contact = SSOManager.DefaultContact;

            // fix the fieldCount when creating an application with no fields
            int fieldCount = Math.Max(1, appConfig.AppFields.Count);

            // create the sso application
            ssoAdmin.CreateApplication(
                appConfig.AppInfo.Name,
                appConfig.AppInfo.Description,
                appConfig.AppInfo.Contact,
                appConfig.AppInfo.UserAccounts,
                appConfig.AppInfo.AdminAccounts,
                appConfig.AppInfo.Flags & ~SSOFlag.SSO_FLAG_ENABLED, // the SSO_FLAG_ENABLED flag cannot be specified when creating an SSO application
                fieldCount);

            // create dummy field in the first slot
            ssoAdmin.CreateFieldInfo(appConfig.AppInfo.Name, "(unused)", SSOFlag.SSO_FLAG_NONE);
            // create the actual fields
            foreach (SSOAppField field in appConfig.AppFields)
            {
                // set field flags
                int fieldFlags = SSOFlag.SSO_FLAG_NONE;
                if (field.Masked == true)
                {
                    fieldFlags |= SSOFlag.SSO_FLAG_FIELD_INFO_MASK;
                }
                // create it
                ssoAdmin.CreateFieldInfo(appConfig.AppInfo.Name, field.Name, fieldFlags);
            }

            // enable application
            if (appConfig.AppInfo.Enabled == true)
            {
                ssoAdmin.UpdateApplication(appConfig.AppInfo.Name, null, null, null, null, SSOFlag.SSO_FLAG_ENABLED, SSOFlag.SSO_FLAG_ENABLED);
            }
        }
Exemple #10
0
 private void Enlist(object obj, Transaction tx)
 {
     try
     {
         IPropertyBag propertyBag    = (IPropertyBag)obj;
         object       dtcTransaction = TransactionInterop.GetDtcTransaction(tx);
         ISSOAdmin2   iSSOAdmin      = (ISSOAdmin2) new SSOAdmin();
         int          flags;
         int          auditAppDeleteMax;
         int          auditMappingDeleteMax;
         int          auditNtpLookupMax;
         int          auditXpLookupMax;
         int          ticketTimeout;
         int          credCacheTimeout;
         iSSOAdmin.GetGlobalInfo(out flags, out auditAppDeleteMax, out auditMappingDeleteMax, out auditNtpLookupMax, out auditXpLookupMax, out ticketTimeout, out credCacheTimeout, out _secrectServer, out _ssoAdminGroup, out _affiliateAppMgrGroup);
         object secrectServer = _secrectServer;
         propertyBag.Write("CurrentSSOServer", ref secrectServer);
         propertyBag.Write("Transaction", ref dtcTransaction);
     }
     catch (Exception ex)
     {
         DoSsoEvent("SSO Helper - Enlist", ex.Message, true);
     }
 }
        /// <summary>
        /// Creates a new application in the SSO store using specified
        /// the configuration information. Creates both, the application
        /// and fields.
        /// </summary>
        /// <param name="appConfig">Configuration information used to create the application.</param>
        public static void CreateApplication(SSOAppConfig appConfig)
        {
            // create a transaction
            using (TransactionScope transactionScope = new TransactionScope())
            {
                // create SSO objects
                ISSOAdmin2 ssoAdmin = new ISSOAdmin2();

                // enlist them in the transaction
                SSOManager.Enlist(ssoAdmin as IPropertyBag, Transaction.Current);

                // create the sso application
                SSOManager.CreateApplication(ssoAdmin, appConfig);

                // commit the transaction
                transactionScope.Complete();
            }

            // update the application fields
            ISSOConfigStore ssoConfigStore = new ISSOConfigStore();

            //SSO.Enlist(ssoConfigStore as IPropertyBag, Transaction.Current);
            ssoConfigStore.SetConfigInfo(appConfig.AppInfo.Name, SSOManager.ConfigIdentifier, appConfig.AppFields);
        }
 private void Enlist(object obj, Transaction tx)
 {
     try
     {
         IPropertyBag propertyBag    = (IPropertyBag)obj;
         object       dtcTransaction = TransactionInterop.GetDtcTransaction(tx);
         ISSOAdmin2   iSSOAdmin      = (ISSOAdmin2) new SSOAdmin();
         int          num;
         int          num2;
         int          num3;
         int          num4;
         int          num5;
         int          num6;
         int          num7;
         iSSOAdmin.GetGlobalInfo(out num, out num2, out num3, out num4, out num5, out num6, out num7, out this.strSecrectServer, out this.strSSOAdminGroup, out this.strAffiliateAppMgrGroup);
         object obj2 = this.strSecrectServer;
         propertyBag.Write("CurrentSSOServer", ref obj2);
         propertyBag.Write("Transaction", ref dtcTransaction);
     }
     catch (Exception ex)
     {
         EventLog.WriteEntry("SSOConfigCmdTool - Enlist", ex.Message);
     }
 }
        /// <summary>
        /// Purges the cached credentials for an application on all Enterprise Single Sign-On (SSO) servers.
        /// </summary>
        /// <param name="appName">The name of the application.</param>
        public static void PurgeApplicationCache(string appName)
        {
            ISSOAdmin2 ssoAdmin = new ISSOAdmin2();

            ssoAdmin.PurgeCacheForApplication(appName);
        }
 /// <summary>
 /// Deletes the specified application.
 /// </summary>
 /// <remarks>
 /// For internal use only. Assumes a TransactionScope is created before
 /// calling this method.
 /// </remarks>
 /// <param name="ssoAdmin">ISSOAdmin2 instance.</param>
 /// <param name="appName">The name of the application to be deleted.</param>
 private static void DeleteApplication(ISSOAdmin2 ssoAdmin, string appName)
 {
     ssoAdmin.DeleteApplication(appName);
 }
        /// <summary>
        /// Updates the application metadata information.
        /// </summary>
        /// <param name="appInfo">Application metadata information.</param>
        public static void UpdateApplicationInfo(SSOAppInfo appInfo)
        {
            ISSOAdmin2 ssoAdmin = new ISSOAdmin2();

            SSOManager.UpdateApplicationInfo(ssoAdmin, appInfo);
        }