示例#1
0
        ///// <summary>
        /////
        ///// </summary>
        ///// <param name="idUser"></param>
        ///// <param name="ldapInfo"></param>
        //public static void SaveLdapUserConfig(string idUser, LdapConfig ldapInfo)
        //{
        //    using (DocsPaDB.TransactionContext transactionalContext = new DocsPaDB.TransactionContext())
        //    {
        //        // Verifica se l'integrazione con ldap è attivata
        //        LdapConfigurations.CheckForLdapIntegrationActivated();

        //        // Validazione dati di configurazione
        //        ValidateConfigurations(ldapInfo);

        //        DocsPaDB.Query_DocsPAWS.Ldap ldapDbServices = new DocsPaDB.Query_DocsPAWS.Ldap();

        //        ldapDbServices.SaveLdapUserConfig(idUser, ldapInfo);

        //        transactionalContext.Complete();
        //    }
        //}

        /// <summary>
        /// Verifica se un determinato utente può collegarsi ad un archivio LDAP
        /// </summary>
        /// <param name="infoUtente"></param>
        /// <param name="userName"></param>
        /// <returns></returns>
        public static bool UserCanConnectToLdap(string userName)
        {
            string idAmministrazioneAsString;

            using (DocsPaDB.Query_DocsPAWS.Utenti utentiDb = new DocsPaDB.Query_DocsPAWS.Utenti())
                utentiDb.GetIdAmmUtente(out idAmministrazioneAsString, userName);

            int idAmministrazione;

            Int32.TryParse(idAmministrazioneAsString, out idAmministrazione);

            if (idAmministrazione > 0)
            {
                // Solo gli utenti configurati in un amministrazione posso autenticarsi ad LDAP
                DocsPaVO.Ldap.LdapConfig configInfo = DocsPaLdapServices.LdapConfigurations.GetLdapConfig(idAmministrazioneAsString);

                DocsPaVO.Ldap.LdapUserConfig userConfigInfo = GetLdapUserConfigByName(userName);

                return(!string.IsNullOrEmpty(configInfo.ServerName) && !string.IsNullOrEmpty(configInfo.GroupDN) &&
                       userConfigInfo.LdapAuthenticated);
            }
            else
            {
                // Utente non associato ad un'amministrazione (es. SuperAdmin)
                return(false);
            }
        }
示例#2
0
        /// <summary>
        /// Reperimento delle informazioni di configurazione ldap per una singolo utente
        /// </summary>
        /// <param name="userName"></param>
        /// <returns></returns>
        public DocsPaVO.Ldap.LdapUserConfig GetLdapUserConfigByName(string userName)
        {
            try
            {
                DocsPaVO.Ldap.LdapUserConfig info = null;

                using (DocsPaDB.DBProvider dbProvider = new DBProvider())
                {
                    DocsPaUtils.Query queryDef = DocsPaUtils.InitQuery.getInstance().getQuery("S_GET_LDAP_USER_CONFIG_BY_NAME");
                    queryDef.setParam("userName", userName);

                    string commandText = queryDef.getSQL();
                    logger.Debug(commandText);

                    using (IDataReader reader = dbProvider.ExecuteReader(commandText))
                    {
                        if (reader.Read())
                        {
                            info = new LdapUserConfig
                            {
                                LdapIdSync      = DocsPaUtils.Data.DataReaderHelper.GetValue <string>(reader, "LDAP_ID_SYNC", true, string.Empty),
                                LdapSyncronized = (!string.IsNullOrEmpty(DocsPaUtils.Data.DataReaderHelper.GetValue <string>(reader, "LDAP_ID_SYNC", true, string.Empty)) &&
                                                   (DocsPaUtils.Data.DataReaderHelper.GetValue <string>(reader, "LDAP_NEVER_SYNC", true, "0") == "0")),
                                LdapAuthenticated = (DocsPaUtils.Data.DataReaderHelper.GetValue <string>(reader, "LDAP_AUTHENTICATED", true, "0") == "1")
                            };

                            //if (info.LdapAuthenticated)
                            //{
                            //    info.LdapUserConfigSettings = new LdapConfig
                            //    {
                            //        LdapIntegrationActive = true,
                            //        ServerName = DocsPaUtils.Data.DataReaderHelper.GetValue<string>(reader, "SERVER_NAME", true, string.Empty),
                            //        GroupDN = DocsPaUtils.Data.DataReaderHelper.GetValue<string>(reader, "GROUP_DN", true, string.Empty)
                            //    };

                            //    if (string.IsNullOrEmpty(info.LdapUserConfigSettings.ServerName) ||
                            //        string.IsNullOrEmpty(info.LdapUserConfigSettings.GroupDN))
                            //    {
                            //        using (Utenti userDb = new Utenti())
                            //        {
                            //            string idAmm;

                            //            // Reperimento id amministrazione per l'utente
                            //            userDb.GetIdAmmUtente(out idAmm, userName);

                            //            LdapConfig adminConfig = GetLdapConfig(idAmm);
                            //            info.LdapUserConfigSettings.ServerName = adminConfig.ServerName;
                            //            info.LdapUserConfigSettings.GroupDN = adminConfig.GroupDN;
                            //        }
                            //    }
                            //}
                        }
                    }
                }

                return(info);
            }
            catch (Exception ex)
            {
                string errorMessage = "Errore nel reperimento delle configurazione LDAP per l'utente";

                logger.Debug(errorMessage, ex);
                throw new ApplicationException(errorMessage, ex);
            }
        }