Ejemplo n.º 1
0
        public static NspiPrincipal FromUserSid(SecurityIdentifier sid, string userDomain)
        {
            NspiPrincipal principal = null;

            if (!string.IsNullOrEmpty(userDomain))
            {
                MiniRecipient miniRecipient = NspiPrincipal.FindMiniRecipientBySid(ADSessionSettings.RootOrgOrSingleTenantFromAcceptedDomainAutoDetect(userDomain), sid);
                if (miniRecipient != null)
                {
                    principal = new NspiPrincipal(miniRecipient);
                }
            }
            else if (Configuration.IsDatacenter)
            {
                ExTraceGlobals.NspiTracer.TraceWarning <SecurityIdentifier>(0L, "We have to do a fan out query for user {0} because of legacy client.", sid);
                DirectoryHelper.DoAdCallAndTranslateExceptions(delegate
                {
                    MiniRecipient miniRecipientFromUserId = PartitionDataAggregator.GetMiniRecipientFromUserId(sid);
                    if (miniRecipientFromUserId != null)
                    {
                        principal = new NspiPrincipal(miniRecipientFromUserId);
                    }
                }, "ADAccountPartitionLocator::GetAllAccountPartitionIds");
            }
            else
            {
                principal = NspiPrincipal.FromUserSid(ADSessionSettings.FromRootOrgScopeSet(), sid);
            }
            return(principal ?? new NspiPrincipal(sid));
        }
Ejemplo n.º 2
0
        public override IEnumerable <string> GetFullSyncTenants()
        {
            QueryFilter filter = this.RetrieveFullSyncTenantsSearchFilter();

            return(from cu in PartitionDataAggregator.FindTenantCookieContainers(filter)
                   select cu.ExternalDirectoryOrganizationId);
        }
        public override bool Verify()
        {
            bool flag = null == PartitionDataAggregator.FindFirstMoveRequestLinkedToDatabase((ADObjectId)base.Database.Identity);

            TaskLogger.Trace("NoAssociatedMoveRequestOnDatabaseCondition.Verify(Database '{0}') returns {1}.", new object[]
            {
                base.Database.Identity,
                flag
            });
            return(flag);
        }
        // Token: 0x06000066 RID: 102 RVA: 0x00003074 File Offset: 0x00001274
        private static ADUser[] GlobalFindAllArbitrationMailboxes()
        {
            Server localhost = AuditLogSearchContext.Localhost;

            if (!MapiTaskHelper.IsDatacenter)
            {
                IRecipientSession tenantOrRootOrgRecipientSession = DirectorySessionFactory.Default.GetTenantOrRootOrgRecipientSession(true, ConsistencyMode.IgnoreInvalid, ADSessionSettings.FromRootOrgScopeSet(), 99, "GlobalFindAllArbitrationMailboxes", "f:\\15.00.1497\\sources\\dev\\Management\\src\\ServiceHost\\Servicelets\\AuditLogSearch\\Program\\AuditLogSearchServicelet.cs");
                return(tenantOrRootOrgRecipientSession.FindPaged <ADUser>(RecipientFilterHelper.DiscoveryMailboxFilterForAuditLog(localhost.ExchangeLegacyDN), null, true, null, 0).ToArray <ADUser>());
            }
            return(PartitionDataAggregator.FindAllArbitrationMailboxes(localhost.ExchangeLegacyDN));
        }
Ejemplo n.º 5
0
        public bool Verify(out ADUser matchingObject)
        {
            matchingObject = PartitionDataAggregator.FindFirstUserOrMoveRequestLinkedToDatabase((ADObjectId)base.Database.Identity);
            bool flag = null == matchingObject;

            TaskLogger.Trace("NoAssociatedUserMailboxOnDatabaseCondition.Verify(Database '{0}') returns {1}.", new object[]
            {
                base.Database.Identity,
                flag
            });
            return(flag);
        }
Ejemplo n.º 6
0
        // Token: 0x06000AC3 RID: 2755 RVA: 0x00046B44 File Offset: 0x00044D44
        private Hashtable GetUMEnabledUsersDatacenter(MailboxDatabase database)
        {
            Hashtable hashtable = new Hashtable();

            if (database != null)
            {
                foreach (ADUser aduser in PartitionDataAggregator.GetUMEnabledUsersInDatabase(database))
                {
                    hashtable[aduser.ExchangeGuid] = aduser.OrganizationId;
                }
            }
            return(hashtable);
        }
Ejemplo n.º 7
0
        internal static ADRawEntry FindUserEntry(SecurityIdentifier userSid, WindowsIdentity windowsIdentity, SerializedIdentity serializedIdentity, PartitionId partitionId)
        {
            ADRawEntry result;

            using (new MonitoredScope("FindUserEntry", "FindUserEntry", AuthZLogHelper.AuthZPerfMonitors))
            {
                ADSessionSettings sessionSettings;
                if (partitionId != null)
                {
                    sessionSettings = ADSessionSettings.FromAllTenantsPartitionId(partitionId);
                }
                else
                {
                    sessionSettings = ADSessionSettings.FromRootOrgScopeSet();
                }
                IRecipientSession tenantOrRootOrgRecipientSession = DirectorySessionFactory.Default.GetTenantOrRootOrgRecipientSession(ConsistencyMode.IgnoreInvalid, sessionSettings, 817, "FindUserEntry", "f:\\15.00.1497\\sources\\dev\\Configuration\\src\\ObjectModel\\rbac\\ExchangeAuthorizationPlugin.cs");
                ADRawEntry        adrawEntry = tenantOrRootOrgRecipientSession.FindMiniRecipientBySid <MiniRecipient>(userSid, ExchangeRunspaceConfiguration.userPropertyArray);
                if (adrawEntry == null && VariantConfiguration.InvariantNoFlightingSnapshot.CmdletInfra.ServiceAccountForest.Enabled)
                {
                    adrawEntry = PartitionDataAggregator.GetMiniRecipientFromUserId(userSid, ExchangeRunspaceConfiguration.userPropertyArray, ConsistencyMode.IgnoreInvalid);
                }
                if (adrawEntry == null)
                {
                    ExTraceGlobals.AccessDeniedTracer.TraceWarning <SecurityIdentifier, string>(0L, "EAP.FindUserEntry user {0} could not be found in AD, partitionId: {1}", userSid, (partitionId == null) ? "null" : partitionId.ToString());
                    adrawEntry = ExchangeRunspaceConfiguration.TryFindComputer(userSid);
                }
                if (adrawEntry == null && (windowsIdentity != null || serializedIdentity != null))
                {
                    ExTraceGlobals.AccessDeniedTracer.TraceWarning <SecurityIdentifier>(0L, "EAP.FindUserEntry computer {0} could not be found in AD", userSid);
                    IIdentity identity = (windowsIdentity != null) ? windowsIdentity : serializedIdentity;
                    ICollection <SecurityIdentifier> groupAccountsSIDs = identity.GetGroupAccountsSIDs();
                    tenantOrRootOrgRecipientSession = DirectorySessionFactory.Default.GetTenantOrRootOrgRecipientSession(ConsistencyMode.IgnoreInvalid, ADSessionSettings.FromRootOrgScopeSet(), 850, "FindUserEntry", "f:\\15.00.1497\\sources\\dev\\Configuration\\src\\ObjectModel\\rbac\\ExchangeAuthorizationPlugin.cs");
                    List <ADObjectId> list = null;
                    if (ExchangeRunspaceConfiguration.TryFindLinkedRoleGroupsBySidList(tenantOrRootOrgRecipientSession, groupAccountsSIDs, identity.Name, out list))
                    {
                        adrawEntry = new ADUser
                        {
                            RemotePowerShellEnabled = true
                        };
                    }
                }
                result = adrawEntry;
            }
            return(result);
        }
Ejemplo n.º 8
0
 protected override IEnumerable <MsoTenantCookieContainer> GetPagedData()
 {
     if (this.Identity == null)
     {
         QueryFilter queryFilter = QueryFilter.OrTogether(new QueryFilter[]
         {
             new ExistsFilter(ExchangeConfigurationUnitSchema.MsoForwardSyncNonRecipientCookie),
             new ExistsFilter(ExchangeConfigurationUnitSchema.MsoForwardSyncRecipientCookie)
         });
         QueryFilter filter = QueryFilter.AndTogether(new QueryFilter[]
         {
             queryFilter,
             new ComparisonFilter(ComparisonOperator.NotEqual, ExchangeConfigurationUnitSchema.OrganizationStatus, OrganizationStatus.ReadyForRemoval),
             new ComparisonFilter(ComparisonOperator.NotEqual, ExchangeConfigurationUnitSchema.OrganizationStatus, OrganizationStatus.SoftDeleted),
             new ComparisonFilter(ComparisonOperator.NotEqual, ExchangeConfigurationUnitSchema.OrganizationStatus, OrganizationStatus.PendingRemoval)
         });
         return(PartitionDataAggregator.FindTenantCookieContainers(filter));
     }
     return(base.GetPagedData());
 }
        public bool Verify(out MRSRequest matchingMRSObject)
        {
            matchingMRSObject = PartitionDataAggregator.FindFirstMRSRequestLinkedToDatabase((ADObjectId)base.Database.Identity);
            bool flag;

            if (matchingMRSObject != null)
            {
                this.type = matchingMRSObject.RequestType;
                flag      = false;
            }
            else
            {
                flag = true;
            }
            TaskLogger.Trace("NoAssociatedMRSRequestOnDatabaseCondition.Verify(Database '{0}') returns {1}.", new object[]
            {
                base.Database.Identity,
                flag
            });
            return(flag);
        }
Ejemplo n.º 10
0
        private static ADUser[] InternalFindMultiTenant(OrganizationCapability capability, ADObjectId databaseId)
        {
            QueryFilter additionalfilter = null;

            if (databaseId != null)
            {
                additionalfilter = new ComparisonFilter(ComparisonOperator.Equal, ADMailboxRecipientSchema.Database, databaseId);
            }
            else
            {
                additionalfilter = OrganizationMailbox.GetOrganizationMailboxQueryFilterForLocalServer();
            }
            Dictionary <OrganizationId, ADUser> orgMailboxesDictionary = new Dictionary <OrganizationId, ADUser>();

            PartitionDataAggregator.RunOperationOnAllAccountPartitions(true, delegate(IRecipientSession recipientSession)
            {
                List <ADUser> organizationMailboxesByCapability = OrganizationMailbox.GetOrganizationMailboxesByCapability(recipientSession, capability, additionalfilter);
                foreach (ADUser aduser in organizationMailboxesByCapability)
                {
                    ADUser user = null;
                    if (orgMailboxesDictionary.TryGetValue(aduser.OrganizationId, out user))
                    {
                        if (OrganizationMailbox.UserComparer(user, aduser) > 0)
                        {
                            orgMailboxesDictionary[aduser.OrganizationId] = aduser;
                        }
                    }
                    else
                    {
                        orgMailboxesDictionary[aduser.OrganizationId] = aduser;
                    }
                }
            });
            ADUser[] array = new ADUser[orgMailboxesDictionary.Count];
            if (orgMailboxesDictionary.Count > 0)
            {
                orgMailboxesDictionary.Values.CopyTo(array, 0);
            }
            return(array);
        }
Ejemplo n.º 11
0
 public override IEnumerable <LoadBalancingMiniRecipient> FindAllUsersLinkedToDatabase(ADObjectId databaseId)
 {
     return(PartitionDataAggregator.FindAllUsersLinkedToDatabase <LoadBalancingMiniRecipient>(databaseId));
 }