예제 #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 per l'integrazione con ldap per una singola amministrazione
        /// </summary>
        /// <param name="idAmministrazione"></param>
        /// <returns></returns>
        public DocsPaVO.Ldap.LdapConfig GetLdapConfig(string idAmministrazione)
        {
            try
            {
                DocsPaVO.Ldap.LdapConfig info = null;

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

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

                    using (IDataReader reader = dbProvider.ExecuteReader(commandText))
                    {
                        if (reader.Read())
                        {
                            info = new LdapConfig();

                            info.ServerName     = DocsPaUtils.Data.DataReaderHelper.GetValue <string>(reader, "SERVER_NAME", false);
                            info.DomainUserName = DocsPaUtils.Data.DataReaderHelper.GetValue <string>(reader, "USER_NAME", true, string.Empty);
                            info.GroupDN        = DocsPaUtils.Data.DataReaderHelper.GetValue <string>(reader, "GROUP_DN", false);

                            info.UserAttributes           = new LdapUserAttributes();
                            info.UserAttributes.UserId    = DocsPaUtils.Data.DataReaderHelper.GetValue <string>(reader, "USERID_ATTRIBUTE", true, string.Empty);
                            info.UserAttributes.Email     = DocsPaUtils.Data.DataReaderHelper.GetValue <string>(reader, "EMAIL_ATTRIBUTE", true, string.Empty);
                            info.UserAttributes.Matricola = DocsPaUtils.Data.DataReaderHelper.GetValue <string>(reader, "MATRICOLA_ATTRIBUTE", true, info.UserAttributes.UserId);
                            info.UserAttributes.Nome      = DocsPaUtils.Data.DataReaderHelper.GetValue <string>(reader, "NOME_ATTRIBUTE", true, string.Empty);
                            info.UserAttributes.Cognome   = DocsPaUtils.Data.DataReaderHelper.GetValue <string>(reader, "COGNOME_ATTRIBUTE", true, string.Empty);
                            info.UserAttributes.Sede      = DocsPaUtils.Data.DataReaderHelper.GetValue <string>(reader, "SEDE_ATTRIBUTE", true, string.Empty);
                        }
                    }
                }

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

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