예제 #1
0
        public override LdapObject GetUserBySid(string sid)
        {
            try
            {
                var ldapUniqueIdAttribute = ConfigurationManagerExtension.AppSettings["ldap.unique.id"];

                Criteria criteria;

                if (ldapUniqueIdAttribute == null)
                {
                    criteria = Criteria.Any(
                        Expression.Equal(LdapConstants.RfcLDAPAttributes.ENTRY_UUID, sid),
                        Expression.Equal(LdapConstants.RfcLDAPAttributes.NS_UNIQUE_ID, sid),
                        Expression.Equal(LdapConstants.RfcLDAPAttributes.GUID, sid),
                        Expression.Equal(LdapConstants.ADSchemaAttributes.OBJECT_SID, sid)
                        );
                }
                else
                {
                    criteria = Criteria.All(Expression.Equal(ldapUniqueIdAttribute, sid));
                }

                var searchfilter = string.Format("(&{0}{1})", Settings.UserFilter, criteria);

                var list = LDAPSearcher.Search(Settings.UserDN, NovellLdapSearcher.LdapScope.Sub, searchfilter, limit: 1);

                return(list.FirstOrDefault());
            }
            catch (Exception e)
            {
                Log.ErrorFormat("NovellLdapHelper->GetUserBySid(sid: '{0}') failed. Error: {1}", sid, e);
            }

            return(null);
        }
        public override List <LDAPObject> GetUsersByAttributes(LDAPSupportSettings settings)
        {
            string            password           = GetPassword(settings.PasswordBytes);
            var               criteria           = Criteria.All(Expression.Exists(settings.LoginAttribute));
            var               novellLdapSearcher = new NovellLdapSearcher(AcceptCertificate);
            List <LDAPObject> searchResult       = novellLdapSearcher.Search(settings.Login, password, settings.Server,
                                                                             settings.PortNumber, LdapConnection.SCOPE_SUB, settings.StartTls, criteria, settings.UserFilter, settings.UserDN);

            return(searchResult);
        }
        public override List <LDAPObject> GetUsersFromPrimaryGroup(LDAPSupportSettings settings, string primaryGroupID)
        {
            var distinguishedName = settings.Server + ":" + settings.PortNumber + "/" + settings.UserDN;

            try
            {
                return(systemLdapSearcher.Search(distinguishedName, Criteria.All(Expression.Equal(
                                                                                     Constants.ADSchemaAttributes.PrimaryGroupID, primaryGroupID)), settings.UserFilter, settings));
            }
            catch (Exception e)
            {
                log.ErrorFormat("Can not access to directory: {0}. {1}", distinguishedName, e);
            }
            return(null);
        }
예제 #4
0
        public static List <LDAPUser> GetUsersFromPrimaryGroup(LDAPSupportSettings settings, string primaryGroupID)
        {
            var dn = settings.Server + ":" + settings.PortNumber + "/" + settings.UserDN;

            try
            {
                return(Search(dn, Criteria.All(Expression.Exists(settings.BindAttribute)).Add(Criteria.All(
                                                                                                  Expression.Equal(Constants.ADSchemaAttributes.PrimaryGroupID, primaryGroupID))), settings.UserFilter, settings).
                       ConvertAll <LDAPUser>((LDAPObject obj) => obj as LDAPUser).Where(g => g != null).ToList());
            }
            catch (Exception e)
            {
                _log.ErrorFormat("Can not access to directory: {0}. {1}", dn, e);
            }
            return(null);
        }
예제 #5
0
        internal bool MeetsCriterion(string ruleId)
        {
            Logger.Debug($"Checking criterion {ruleId}");

            if (Criteria.All(x => x.Id != ruleId))
            {
                throw new Exception($"Could not find the specified rule '{ruleId}'");
            }

            GameCriterion criterion = Criteria.First(x => x.Id == ruleId);

            if (criterion.Criterion == null)
            {
                throw new Exception("Expected game criterion to have a specified invokable method");
            }

            return(criterion.Criterion(this));
        }
        public override LDAPObject GetUserBySid(LDAPSupportSettings settings, string sid)
        {
            var distinguishedName = settings.Server + ":" + settings.PortNumber + "/" + settings.UserDN;

            try
            {
                var list = systemLdapSearcher.Search(distinguishedName, Criteria.All(
                                                         Expression.Equal(Constants.ADSchemaAttributes.ObjectSid, sid)), settings.UserFilter, settings);
                if (list.Count != 0)
                {
                    return(list[0]);
                }
            }
            catch (Exception e)
            {
                log.ErrorFormat("Can not access to directory: {0}. {1}", distinguishedName, e);
            }
            return(null);
        }
        public override List <LDAPObject> GetUsersByAttributes(LDAPSupportSettings settings)
        {
            var distinguishedName = settings.Server + ":" + settings.PortNumber + "/" + settings.UserDN;

            try
            {
                return(systemLdapSearcher.Search(distinguishedName, Criteria.All(Expression.Exists(settings.LoginAttribute)),
                                                 settings.UserFilter, settings));
            }
            catch (ArgumentException)
            {
                throw new ArgumentException();
            }
            catch (Exception e)
            {
                log.ErrorFormat("Can not access to directory: {0}. {1}", distinguishedName, e);
            }
            return(null);
        }
예제 #8
0
        public static List <LDAPUser> GetUsersByAttributesAndFilter(LDAPSupportSettings settings, string filter)
        {
            var dn = settings.Server + ":" + settings.PortNumber + "/" + settings.UserDN;

            if (!string.IsNullOrEmpty(settings.UserFilter) && !settings.UserFilter.StartsWith("(") && !settings.UserFilter.EndsWith(")"))
            {
                settings.UserFilter = "(" + settings.UserFilter + ")";
            }
            filter = "(&" + settings.UserFilter + filter + ")";
            try
            {
                return(Search(dn, Criteria.All(Expression.Exists(settings.BindAttribute)), filter, settings).
                       ConvertAll <LDAPUser>((LDAPObject obj) => obj as LDAPUser).Where(u => u != null).ToList());
            }
            catch (Exception e)
            {
                _log.ErrorFormat("Can not access to directory: {0}. {1}", dn, e);
            }
            return(null);
        }
예제 #9
0
        public static List <LDAPUser> GetUsersByAttributes(LDAPSupportSettings settings)
        {
            var dn = settings.Server + ":" + settings.PortNumber + "/" + settings.UserDN;

            try
            {
                return(Search(dn, Criteria.All(Expression.Exists(settings.BindAttribute),
                                               Expression.Exists(settings.LoginAttribute)), settings.UserFilter, settings).
                       ConvertAll <LDAPUser>((LDAPObject obj) => obj as LDAPUser).Where(u => u != null).ToList());
            }
            catch (ArgumentException)
            {
                throw new ArgumentException();
            }
            catch (Exception e)
            {
                _log.ErrorFormat("Can not access to directory: {0}. {1}", dn, e);
            }
            return(null);
        }
        public async Task <IEnumerable <Document> > GetResultAsync()
        {
            var response = await Client.GetAsync($"{EndpointProvider.Endpoint}/{Container}").ConfigureAwait(false);

            if (!response.IsSuccessStatusCode)
            {
                throw new Exception($"{response.StatusCode} {response.ReasonPhrase}: {await response.Content.ReadAsStringAsync().ConfigureAwait(false)}");
            }

            var result = new List <Document>();

            var items = JsonConvert.DeserializeObject <List <Document> >(await response.Content.ReadAsStringAsync().ConfigureAwait(false));

            foreach (var document in items)
            {
                if (Criteria.All(c => c(document)))
                {
                    result.Add(document);
                }
            }

            return(result.AsReadOnly());
        }
예제 #11
0
        public static LDAPUser GetUserBySid(LDAPSupportSettings settings, string sid)
        {
            var dn = settings.Server + ":" + settings.PortNumber + "/" + settings.UserDN;

            try
            {
                var list = Search(dn, Criteria.All(Expression.Exists(settings.BindAttribute)).Add(Criteria.All(
                                                                                                      Expression.Equal(Constants.ADSchemaAttributes.ObjectSid, sid))), settings.UserFilter, settings).
                           ConvertAll <LDAPUser>((LDAPObject obj) => obj as LDAPUser).Where(u => u != null).ToList();
                if (list.Count == 0)
                {
                    return(null);
                }
                else
                {
                    return(list[0]);
                }
            }
            catch (Exception e)
            {
                _log.ErrorFormat("Can not access to directory: {0}. {1}", dn, e);
            }
            return(null);
        }
예제 #12
0
        public override List <LDAPObject> GetUsersFromPrimaryGroup(LDAPSupportSettings settings, string primaryGroupId)
        {
            var distinguishedName = settings.Server + ":" + settings.PortNumber + "/" + settings.UserDN;

            var password = GetPassword(settings.PasswordBytes);

            var novellLdapSearcher = new NovellLdapSearcher(AcceptCertificate);

            try
            {
                return(novellLdapSearcher.Search(settings.Login, password, settings.Server, settings.PortNumber,
                                                 LdapConnection.SCOPE_SUB, settings.StartTls,
                                                 Criteria.All(
                                                     Expression.Equal(Constants.ADSchemaAttributes.PRIMARY_GROUP_ID,
                                                                      primaryGroupId)),
                                                 settings.UserFilter, distinguishedName));
            }
            catch (Exception e)
            {
                Log.ErrorFormat("Can not access to directory: {0}. {1}", distinguishedName, e);
            }

            return(null);
        }
예제 #13
0
 public bool IsScientific()
 {
     return(Criteria.All(x => x.IsMet()));
 }
        public override LDAPObject GetUserBySid(LDAPSupportSettings settings, string sid)
        {
            string password = GetPassword(settings.PasswordBytes);

            try
            {
                string            ldapUniqueIdAttribute = ConfigurationManager.AppSettings["ldap.unique.id"];
                List <LDAPObject> list;
                var novellLdapSearcher = new NovellLdapSearcher(AcceptCertificate);
                if (ldapUniqueIdAttribute == null)
                {
                    list = novellLdapSearcher.Search(settings.Login, password, settings.Server, settings.PortNumber,
                                                     LdapConnection.SCOPE_SUB, settings.StartTls, Criteria.All(Expression.Equal(Constants.RFCLDAPAttributes.EntryUUID, sid)),
                                                     settings.UserFilter, settings.UserDN);
                    if (list == null || list.Count == 0)
                    {
                        list = novellLdapSearcher.Search(settings.Login, password, settings.Server, settings.PortNumber,
                                                         LdapConnection.SCOPE_SUB, settings.StartTls, Criteria.All(Expression.Equal(Constants.RFCLDAPAttributes.NSUniqueId, sid)),
                                                         settings.UserFilter, settings.UserDN);
                        if (list == null || list.Count == 0)
                        {
                            list = novellLdapSearcher.Search(settings.Login, password, settings.Server, settings.PortNumber,
                                                             LdapConnection.SCOPE_SUB, settings.StartTls, Criteria.All(Expression.Equal(Constants.RFCLDAPAttributes.GUID, sid)),
                                                             settings.UserFilter, settings.UserDN);
                            if (list == null || list.Count == 0)
                            {
                                list = novellLdapSearcher.Search(settings.Login, password, settings.Server, settings.PortNumber,
                                                                 LdapConnection.SCOPE_SUB, settings.StartTls, Criteria.All(Expression.Equal(Constants.ADSchemaAttributes.ObjectSid, sid)),
                                                                 settings.UserFilter, settings.UserDN);
                            }
                        }
                    }
                }
                else
                {
                    list = novellLdapSearcher.Search(settings.Login, password, settings.Server, settings.PortNumber,
                                                     LdapConnection.SCOPE_SUB, settings.StartTls, Criteria.All(Expression.Equal(ldapUniqueIdAttribute, sid)),
                                                     settings.UserFilter, settings.UserDN);
                }
                if (list.Count != 0)
                {
                    return(list[0]);
                }
            }
            catch (Exception e)
            {
                log.ErrorFormat("Can not access to directory: {0}. {1}", settings.UserDN, e);
            }
            return(null);
        }