Beispiel #1
0
        public static string GetOrganizationRealm(OrganizationId organizationId)
        {
            if (organizationId == null)
            {
                throw new ArgumentNullException("organizationId");
            }
            if (OAuthConfigHelper.isMultiTenancyEnabled && organizationId.Equals(OrganizationId.ForestWideOrgId))
            {
                throw new InvalidOperationException("Should not query the global Realm property in a Datacenter or Hosting deployement.");
            }
            ADSessionSettings     sessionSettings = ADSessionSettings.FromOrganizationIdWithoutRbacScopesServiceOnly(organizationId);
            IConfigurationSession tenantOrTopologyConfigurationSession = DirectorySessionFactory.Default.GetTenantOrTopologyConfigurationSession(ConsistencyMode.IgnoreInvalid, sessionSettings, 53, "GetOrganizationRealm", "f:\\15.00.1497\\sources\\dev\\data\\src\\directory\\SystemConfiguration\\OAuth\\OAuthConfigHelper.cs");
            string result;

            if (OAuthConfigHelper.isMultiTenancyEnabled)
            {
                OrganizationId            currentOrganizationId     = tenantOrTopologyConfigurationSession.SessionSettings.CurrentOrganizationId;
                ExchangeConfigurationUnit exchangeConfigurationUnit = tenantOrTopologyConfigurationSession.Read <ExchangeConfigurationUnit>(currentOrganizationId.ConfigurationUnit);
                result = exchangeConfigurationUnit.ExternalDirectoryOrganizationId;
            }
            else
            {
                AuthConfig authConfig = AuthConfig.Read(tenantOrTopologyConfigurationSession);
                if (!string.IsNullOrEmpty(authConfig.Realm))
                {
                    result = authConfig.Realm;
                }
                else
                {
                    result = tenantOrTopologyConfigurationSession.GetDefaultAcceptedDomain().DomainName.ToString();
                }
            }
            return(result);
        }
Beispiel #2
0
 public MailboxSearchConfigurationProvider(ADObjectId discoverySystemMailboxId, string searchName, IDiscoverySearchDataProvider searchDataProvider, MailboxDiscoverySearch searchObject)
 {
     Util.ThrowIfNullOrEmpty(searchName, "searchName");
     this.discoverySystemMailboxId = discoverySystemMailboxId;
     if (discoverySystemMailboxId != null)
     {
         OrganizationId    organizationId    = this.ResolveOrganization(discoverySystemMailboxId);
         ADSessionSettings adsessionSettings = ADSessionSettings.FromOrganizationIdWithoutRbacScopesServiceOnly(organizationId);
         if (organizationId.Equals(OrganizationId.ForestWideOrgId))
         {
             adsessionSettings = ADSessionSettings.RescopeToSubtree(adsessionSettings);
         }
         if (VariantConfiguration.InvariantNoFlightingSnapshot.Global.MultiTenancy.Enabled)
         {
             adsessionSettings.IncludeInactiveMailbox = true;
         }
         this.recipientSession = DirectorySessionFactory.Default.GetTenantOrRootOrgRecipientSession(ConsistencyMode.PartiallyConsistent, adsessionSettings, 146, ".ctor", "f:\\15.00.1497\\sources\\dev\\EDiscovery\\src\\MailboxSearch\\Common\\MailboxSearchConfigurationProvider.cs");
     }
     this.SearchDataProvider = searchDataProvider;
     if (this.SearchDataProvider == null)
     {
         this.SearchDataProvider = new DiscoverySearchDataProvider(this.DiscoverySystemMailboxUser.OrganizationId);
     }
     this.SearchObject = searchObject;
     if (this.SearchObject == null)
     {
         this.SearchObject = this.SearchDataProvider.Find <MailboxDiscoverySearch>(searchName);
         if (this.SearchObject == null)
         {
             Util.Tracer.TraceError <string>((long)this.GetHashCode(), "Unable to find SearchObject {0}", searchName);
             throw new SearchObjectNotFoundException(Strings.UnableToFindSearchObject(searchName));
         }
     }
 }
        public DataClassificationConfig GetDataClassificationConfig(OrganizationId organizationId, IConfigurationSession currentDataSession)
        {
            if (object.ReferenceEquals(null, organizationId))
            {
                throw new ArgumentNullException("organizationId");
            }
            if (currentDataSession == null)
            {
                throw new ArgumentNullException("currentDataSession");
            }
            if (!VariantConfiguration.InvariantNoFlightingSnapshot.Global.MultiTenancy.Enabled || OrganizationId.ForestWideOrgId.Equals(organizationId))
            {
                return(null);
            }
            if (!organizationId.Equals(currentDataSession.SessionSettings.CurrentOrganizationId))
            {
                throw new ArgumentException(new ArgumentException().Message, "currentDataSession");
            }
            SharedConfiguration   sharedConfiguration = SharedConfiguration.GetSharedConfiguration(organizationId);
            IConfigurationSession configurationSession;

            if (sharedConfiguration != null)
            {
                configurationSession = DirectorySessionFactory.Default.GetTenantOrTopologyConfigurationSession(true, ConsistencyMode.PartiallyConsistent, sharedConfiguration.GetSharedConfigurationSessionSettings(), 1186, "GetDataClassificationConfig", "f:\\15.00.1497\\sources\\dev\\Management\\src\\Management\\transport\\ClassificationDefinitions\\ClassificationDefinitionUtils.cs");
            }
            else
            {
                configurationSession = currentDataSession;
            }
            DataClassificationConfig[] array = configurationSession.Find <DataClassificationConfig>(null, QueryScope.SubTree, null, null, 1);
            ExAssert.RetailAssert(array != null && 1 == array.Length, "There should be one and only one DataClassificationConfig applicable to a particular tenant.");
            return(array[0]);
        }
        private void CreatePartnerApplicationsContainer()
        {
            ADObjectId containerId = PartnerApplication.GetContainerId(this.ConfigurationSession);

            if (this.ConfigurationSession.Read <Container>(containerId) == null)
            {
                IConfigurationSession configurationSession  = (IConfigurationSession)base.DataSession;
                OrganizationId        currentOrganizationId = this.ConfigurationSession.SessionSettings.CurrentOrganizationId;
                if (!currentOrganizationId.Equals(OrganizationId.ForestWideOrgId))
                {
                    ADObjectId containerId2 = AuthConfig.GetContainerId(this.ConfigurationSession);
                    if (this.ConfigurationSession.Read <AuthConfig>(containerId2) == null)
                    {
                        AuthConfig authConfig = new AuthConfig();
                        authConfig.OrganizationId = currentOrganizationId;
                        authConfig.SetId(containerId2);
                        configurationSession.Save(authConfig);
                    }
                }
                Container container = new Container();
                container.OrganizationId = currentOrganizationId;
                container.SetId(containerId);
                configurationSession.Save(container);
            }
        }
        public IEnumerable <TransportRule> GetAllClassificationRuleCollection(OrganizationId organizationId, IConfigurationSession currentDataSession, QueryFilter additionalFilter)
        {
            if (object.ReferenceEquals(null, organizationId))
            {
                throw new ArgumentNullException("organizationId");
            }
            if (currentDataSession != null && !organizationId.Equals(currentDataSession.SessionSettings.CurrentOrganizationId))
            {
                throw new ArgumentException(new ArgumentException().Message, "currentDataSession");
            }
            HashSet <TransportRule> hashSet = new HashSet <TransportRule>(ClassificationDefinitionsDataReader.transportRuleComparer);
            bool flag = OrganizationId.ForestWideOrgId.Equals(organizationId);
            IConfigurationSession configurationSession = null;

            if (flag && currentDataSession != null)
            {
                configurationSession = currentDataSession;
            }
            else if (flag || this.isAggregateReader)
            {
                configurationSession = DirectorySessionFactory.Default.CreateTopologyConfigurationSession(true, ConsistencyMode.PartiallyConsistent, ADSessionSettings.FromRootOrgScopeSet(), 1092, "GetAllClassificationRuleCollection", "f:\\15.00.1497\\sources\\dev\\Management\\src\\Management\\transport\\ClassificationDefinitions\\ClassificationDefinitionUtils.cs");
            }
            if (configurationSession != null)
            {
                hashSet.UnionWith(configurationSession.FindPaged <TransportRule>(additionalFilter, configurationSession.GetOrgContainerId().GetDescendantId(ClassificationDefinitionConstants.ClassificationDefinitionsRdn), false, null, 0));
            }
            if (!flag)
            {
                IConfigurationSession configurationSession2 = currentDataSession ?? DirectorySessionFactory.Default.GetTenantOrTopologyConfigurationSession(true, ConsistencyMode.PartiallyConsistent, ADSessionSettings.FromOrganizationIdWithoutRbacScopes(ADSystemConfigurationSession.GetRootOrgContainerIdForLocalForest(), organizationId, null, false), 1114, "GetAllClassificationRuleCollection", "f:\\15.00.1497\\sources\\dev\\Management\\src\\Management\\transport\\ClassificationDefinitions\\ClassificationDefinitionUtils.cs");
                hashSet.UnionWith(configurationSession2.FindPaged <TransportRule>(additionalFilter, configurationSession2.GetOrgContainerId().GetDescendantId(ClassificationDefinitionConstants.ClassificationDefinitionsRdn), false, null, 0));
            }
            return(hashSet);
        }
Beispiel #6
0
        protected void ResolveEntry(RecipientIdParameter entry, out ADRecipient adRecipient, out SmtpAddress?externalAddress)
        {
            if (entry == null)
            {
                base.WriteError(new ArgumentNullException("entry"), (ErrorCategory)1000, null);
            }
            adRecipient     = null;
            externalAddress = null;
            try
            {
                adRecipient = (ADRecipient)base.GetDataObject <ADRecipient>(entry, base.TenantGlobalCatalogSession, this.DataObject.OrganizationId.OrganizationalUnit, new LocalizedString?(Strings.ErrorRecipientNotFound((string)entry)), new LocalizedString?(Strings.ErrorRecipientNotUnique((string)entry)));
            }
            catch (ManagementObjectNotFoundException)
            {
                try
                {
                    externalAddress = new SmtpAddress?(SmtpAddress.Parse(entry.ToString()));
                }
                catch (FormatException exception)
                {
                    base.WriteError(exception, ErrorCategory.InvalidData, null);
                }
                adRecipient = null;
                return;
            }
            OrganizationId organizationId  = this.DataObject.OrganizationId;
            OrganizationId organizationId2 = adRecipient.OrganizationId;

            if (!organizationId.Equals(organizationId2))
            {
                base.WriteError(new RecipientTaskException(Strings.ErrorEntryNotInRecipientOrg(entry.ToString())), (ErrorCategory)1003, null);
            }
        }
Beispiel #7
0
 private bool Equals(Event <T> other)
 {
     return(OrganizationId.Equals(other.OrganizationId) &&
            SubscriptionId.Equals(other.SubscriptionId) &&
            UserId.Equals(other.UserId) &&
            EqualityComparer <T> .Default.Equals(EventData, other.EventData));
 }
        // Token: 0x06000779 RID: 1913 RVA: 0x0001D180 File Offset: 0x0001B380
        public IAsyncResult BeginGetBackEndServerList(MiniRecipient miniRecipient, int maxServers, AsyncCallback callback, object state)
        {
            if (miniRecipient == null)
            {
                throw new ArgumentNullException("miniRecipient");
            }
            if (maxServers <= 0)
            {
                throw new ArgumentException("maxServers needs to be greater than zero");
            }
            this.database   = miniRecipient.Database;
            this.maxServers = maxServers;
            OrganizationId organizationId     = miniRecipient.OrganizationId;
            SmtpAddress    primarySmtpAddress = miniRecipient.PrimarySmtpAddress;

            if (this.database == null)
            {
                ADUser defaultOrganizationMailbox = HttpProxyBackEndHelper.GetDefaultOrganizationMailbox(organizationId, null);
                if (defaultOrganizationMailbox == null || defaultOrganizationMailbox.Database == null)
                {
                    ExTraceGlobals.CafeTracer.TraceError <OrganizationId>(0L, "[BackEndLocator.BeginGetBackEndServerList] Cannot find organization mailbox for organization {1}", organizationId);
                    throw new AdUserNotFoundException(ServerStrings.ADUserNotFound);
                }
                this.database      = defaultOrganizationMailbox.Database;
                primarySmtpAddress = defaultOrganizationMailbox.PrimarySmtpAddress;
            }
            string domainName = null;

            if (organizationId != null && !organizationId.Equals(OrganizationId.ForestWideOrgId))
            {
                domainName = primarySmtpAddress.Domain;
            }
            this.serverLocator = MailboxServerLocator.Create(this.database.ObjectGuid, domainName, this.database.PartitionFQDN);
            bool         flag = true;
            IAsyncResult result;

            try
            {
                result = this.serverLocator.BeginGetServer(callback, state);
                flag   = false;
            }
            catch (Exception ex)
            {
                ExTraceGlobals.CafeTracer.TraceError <Exception>(0L, "[AsyncBackEndLocator.BeginGetBackEndServerList] Caught exception {0}.", ex);
                if (BackEndLocator.ShouldWrapInBackendLocatorException(ex))
                {
                    throw new BackEndLocatorException(ex);
                }
                throw;
            }
            finally
            {
                if (flag)
                {
                    this.serverLocator.Dispose();
                    this.serverLocator = null;
                }
            }
            return(result);
        }
Beispiel #9
0
        private bool TrySetExternalOrgId(OrganizationId orgId)
        {
            if (orgId.Equals(OrganizationId.ForestWideOrgId))
            {
                this.externalOrganizationIdString = string.Empty;
                return(true);
            }
            ExchangeConfigurationUnit configUnitPassedToDelegate = null;
            Guid empty = Guid.Empty;
            ADOperationResult adoperationResult = ADNotificationAdapter.TryRunADOperation(delegate()
            {
                IConfigurationSession configurationSession = DirectorySessionFactory.Default.CreateTenantConfigurationSession(ConsistencyMode.IgnoreInvalid, ADSessionSettings.FromOrganizationIdWithoutRbacScopesServiceOnly(orgId), 241, "TrySetExternalOrgId", "f:\\15.00.1497\\sources\\dev\\infoworker\\src\\common\\MessageTracking\\DirectoryContext.cs");
                configUnitPassedToDelegate = configurationSession.Read <ExchangeConfigurationUnit>(orgId.ConfigurationUnit);
            });

            if (!adoperationResult.Succeeded)
            {
                TraceWrapper.SearchLibraryTracer.TraceDebug <string, Exception>(0, "Failed to get ExternalOrgId from AD. {0} Error: {1}", (adoperationResult.ErrorCode == ADOperationErrorCode.PermanentError) ? "Permanent" : "Retriable", adoperationResult.Exception);
                return(false);
            }
            if (configUnitPassedToDelegate == null || !Guid.TryParse(configUnitPassedToDelegate.ExternalDirectoryOrganizationId, out empty))
            {
                TraceWrapper.SearchLibraryTracer.TraceDebug(0, "Failed read ExternalOrgId from AD Session", new object[0]);
                return(false);
            }
            this.externalOrganizationIdString = empty.ToString();
            return(true);
        }
Beispiel #10
0
        public static bool IsExternalAccess(string userId, OrganizationId userOrganization, OrganizationId currentOrganization)
        {
            if (string.IsNullOrEmpty(userId))
            {
                return(true);
            }
            if (AuditFeatureManager.IsExternalAccessCheckOnDedicatedEnabled())
            {
                NTAccount          ntaccount = new NTAccount(AdminAuditExternalAccessDeterminer.TransformUserID(userId));
                SecurityIdentifier securityIdentifier;
                try
                {
                    securityIdentifier = (SecurityIdentifier)ntaccount.Translate(typeof(SecurityIdentifier));
                }
                catch (IdentityNotMappedException)
                {
                    ntaccount = new NTAccount(userId);
                    try
                    {
                        securityIdentifier = (SecurityIdentifier)ntaccount.Translate(typeof(SecurityIdentifier));
                    }
                    catch (IdentityNotMappedException)
                    {
                        return(true);
                    }
                }
                bool flag;
                return(AdminAuditExternalAccessDeterminer.externalAccessLRUCache.Get(securityIdentifier.ToString(), out flag));
            }
            bool flag2 = userOrganization == null || currentOrganization == null;

            return(!flag2 && !userOrganization.Equals(currentOrganization));
        }
Beispiel #11
0
        protected override void InternalProcessRecord()
        {
            LazilyInitialized <SharedTenantConfigurationState> currentOrgState = this.CurrentOrgState;
            OrganizationId currentOrganizationId = base.CurrentOrganizationId;
            TDataObject    dataObject            = base.DataObject;

            if (!currentOrganizationId.Equals(dataObject.OrganizationId))
            {
                currentOrgState = new LazilyInitialized <SharedTenantConfigurationState>(delegate()
                {
                    TDataObject dataObject3 = base.DataObject;
                    return(SharedConfiguration.GetSharedConfigurationState(dataObject3.OrganizationId));
                });
            }
            if (SharedConfigurationTaskHelper.ShouldPrompt(this, this.SharedTenantConfigurationMode, currentOrgState) && !base.InternalForce)
            {
                TDataObject dataObject2 = base.DataObject;
                if (!base.ShouldContinue(Strings.ConfirmSharedConfiguration(dataObject2.OrganizationId.OrganizationalUnit.Name)))
                {
                    TaskLogger.LogExit();
                    return;
                }
            }
            base.InternalProcessRecord();
        }
        private void VerifyDistributionGroups(MultiValuedProperty <RecipientIdParameter> identities, string parameterName)
        {
            if (identities == null)
            {
                return;
            }
            ADRecipient          adrecipient = null;
            HashSet <ADObjectId> hashSet     = new HashSet <ADObjectId>();

            foreach (RecipientIdParameter recipientIdParameter in identities)
            {
                try
                {
                    adrecipient = (ADRecipient)base.GetDataObject <ADRecipient>(recipientIdParameter, base.TenantGlobalCatalogSession, this.DataObject.OrganizationId.OrganizationalUnit, new LocalizedString?(Strings.ErrorRecipientNotFound(recipientIdParameter.ToString())), new LocalizedString?(Strings.ErrorRecipientNotUnique(recipientIdParameter.ToString())));
                }
                catch (ManagementObjectNotFoundException exception)
                {
                    base.WriteError(exception, (ErrorCategory)1003, null);
                }
                OrganizationId organizationId  = this.DataObject.OrganizationId;
                OrganizationId organizationId2 = adrecipient.OrganizationId;
                if (!organizationId.Equals(organizationId2))
                {
                    base.WriteError(new SupervisionPolicyTaskException(Strings.RecipientNotFoundInOrganization(recipientIdParameter.ToString())), (ErrorCategory)1003, null);
                }
                if (!ADRecipient.IsAllowedDeliveryRestrictionGroup(adrecipient.RecipientType))
                {
                    base.WriteError(new SupervisionPolicyTaskException(Strings.SpecifiedRecipientNotDistributionGroup(recipientIdParameter.ToString())), (ErrorCategory)1003, null);
                }
                if (!hashSet.Add(adrecipient.Id))
                {
                    base.WriteError(new SupervisionPolicyTaskException(Strings.ErrorRecipientIdParamElementsNotUnique(parameterName, recipientIdParameter.ToString())), (ErrorCategory)1003, null);
                }
            }
        }
Beispiel #13
0
 protected void SetCurrentOrganizationWithScopeSet(OrganizationId orgId)
 {
     if (orgId != null && !orgId.Equals(OrganizationId.ForestWideOrgId))
     {
         base.CurrentTaskContext.ScopeSet = ScopeSet.ResolveUnderScope(orgId, base.CurrentTaskContext.ScopeSet);
     }
     base.CurrentOrganizationId = orgId;
 }
Beispiel #14
0
 private bool Equals(EventHistoryTableEntity other)
 {
     return(string.Equals(PartitionKey, other.PartitionKey) &&
            string.Equals(RowKey, other.RowKey) &&
            Created.Equals(other.Created) &&
            string.Equals(EventType, other.EventType) &&
            string.Equals(OperationName, other.OperationName) &&
            OrganizationId.Equals(other.OrganizationId) &&
            SubscriptionId.Equals(other.SubscriptionId) &&
            string.Equals(Data, other.Data));
 }
        protected override void ResolveCurrentOrgIdBasedOnIdentity(IIdentityParameter identity)
        {
            MailboxFolderIdParameter identity2 = this.Identity;

            if (identity2 != null && identity2.RawOwner != null && base.CurrentOrganizationId != null && base.CurrentOrganizationId.Equals(OrganizationId.ForestWideOrgId))
            {
                OrganizationId organizationId = identity2.RawOwner.ResolveOrganizationIdBasedOnIdentity(base.ExecutingUserOrganizationId);
                if (organizationId != null && !organizationId.Equals(base.CurrentOrganizationId))
                {
                    base.SetCurrentOrganizationWithScopeSet(organizationId);
                }
            }
        }
        internal static object OuOrganizationIdGetter(IPropertyBag propertyBag)
        {
            OrganizationId organizationId = (OrganizationId)ADObject.OrganizationIdGetter(propertyBag);

            if (organizationId.Equals(OrganizationId.ForestWideOrgId))
            {
                ADObjectId adobjectId = ADOrganizationalUnit.ConfigurationUnitLinkGetter(propertyBag);
                if (adobjectId != null)
                {
                    organizationId = new OrganizationId((ADObjectId)propertyBag[ADObjectSchema.Id], adobjectId);
                }
            }
            return(organizationId);
        }
Beispiel #17
0
        // Token: 0x060005CC RID: 1484 RVA: 0x0001614C File Offset: 0x0001434C
        protected override void InternalProcessRecord()
        {
            TaskLogger.LogEnter();
            OrganizationId currentOrganizationId = base.CurrentOrganizationId;
            TDataObject    dataObject            = this.DataObject;

            if (!currentOrganizationId.Equals(dataObject.OrganizationId))
            {
                this.CurrentOrgState = new LazilyInitialized <SharedTenantConfigurationState>(delegate()
                {
                    TDataObject dataObject8 = this.DataObject;
                    return(SharedConfiguration.GetSharedConfigurationState(dataObject8.OrganizationId));
                });
            }
            if (SharedConfigurationTaskHelper.ShouldPrompt(this, this.SharedTenantConfigurationMode, this.CurrentOrgState) && !base.InternalForce)
            {
                TDataObject dataObject2 = this.DataObject;
                if (!base.ShouldContinue(Strings.ConfirmSharedConfiguration(dataObject2.OrganizationId.OrganizationalUnit.Name)))
                {
                    TaskLogger.LogExit();
                    return;
                }
            }
            TDataObject dataObject3 = this.DataObject;

            if (dataObject3.IsChanged(ADObjectSchema.Id))
            {
                IDirectorySession tenantOrTopologyConfigurationSession = DirectorySessionFactory.Default.GetTenantOrTopologyConfigurationSession(base.DomainController, true, ConsistencyMode.PartiallyConsistent, null, base.OrgWideSessionSettings, ConfigScopes.TenantSubTree, 702, "InternalProcessRecord", "f:\\15.00.1497\\sources\\dev\\Configuration\\src\\ObjectModel\\BaseTasks\\SetAdObjectTask.cs");
                tenantOrTopologyConfigurationSession.UseConfigNC = ((IDirectorySession)base.DataSession).UseConfigNC;
                TDataObject dataObject4 = this.DataObject;
                ADObjectId  parent      = dataObject4.Id.Parent;
                ADRawEntry  adrawEntry  = tenantOrTopologyConfigurationSession.ReadADRawEntry(parent, new PropertyDefinition[]
                {
                    ADObjectSchema.ExchangeVersion,
                    ADObjectSchema.ObjectClass
                });
                ExchangeObjectVersion        exchangeObjectVersion = (ExchangeObjectVersion)adrawEntry[ADObjectSchema.ExchangeVersion];
                MultiValuedProperty <string> multiValuedProperty   = (MultiValuedProperty <string>)adrawEntry[ADObjectSchema.ObjectClass];
                TDataObject dataObject5 = this.DataObject;
                if (dataObject5.ExchangeVersion.IsOlderThan(exchangeObjectVersion) && !multiValuedProperty.Contains(Organization.MostDerivedClass))
                {
                    TDataObject dataObject6 = this.DataObject;
                    string      name        = dataObject6.Name;
                    TDataObject dataObject7 = this.DataObject;
                    base.WriteError(new TaskException(Strings.ErrorParentHasNewerVersion(name, dataObject7.ExchangeVersion.ToString(), exchangeObjectVersion.ToString())), (ErrorCategory)1004, null);
                }
            }
            base.InternalProcessRecord();
            TaskLogger.LogExit();
        }
Beispiel #18
0
 protected virtual void ResolveCurrentOrgIdBasedOnIdentity(IIdentityParameter identity)
 {
     if (this.ShouldSupportPreResolveOrgIdBasedOnIdentity() && base.CurrentOrganizationId != null && base.CurrentOrganizationId.Equals(OrganizationId.ForestWideOrgId))
     {
         ADIdParameter adidParameter = identity as ADIdParameter;
         if (adidParameter != null)
         {
             OrganizationId organizationId = adidParameter.ResolveOrganizationIdBasedOnIdentity(base.ExecutingUserOrganizationId);
             if (organizationId != null && !organizationId.Equals(base.CurrentOrganizationId))
             {
                 this.SetCurrentOrganizationWithScopeSet(organizationId);
             }
         }
     }
 }
Beispiel #19
0
        // Token: 0x060003B8 RID: 952 RVA: 0x00017530 File Offset: 0x00015730
        private bool TryGetMailboxAccessPartnerInfo(CallContext callContext, ADRecipient callerAdRecipient, out PartnerInfo partnerInfo, out string targetTenant)
        {
            partnerInfo  = null;
            targetTenant = null;
            if (!Common.IsMultiTenancyEnabled)
            {
                return(false);
            }
            if (callContext.Users.Count != 1)
            {
                return(false);
            }
            User        user        = callContext.Users[0];
            SmtpAddress smtpAddress = new SmtpAddress(user.Mailbox);

            if (!smtpAddress.IsValidAddress)
            {
                return(false);
            }
            string         name           = callerAdRecipient.Name;
            SmtpDomain     smtpDomain     = new SmtpDomain(smtpAddress.Domain);
            OrganizationId organizationId = DomainToOrganizationIdCache.Singleton.Get(smtpDomain);

            if (organizationId != null && !ADAccountPartitionLocator.IsKnownPartition(organizationId.PartitionId))
            {
                organizationId = null;
            }
            OrganizationId organizationId2 = callerAdRecipient.OrganizationId;

            if (organizationId != null && organizationId.Equals(organizationId2))
            {
                ExTraceGlobals.FrameworkTracer.TraceDebug <string, OrganizationId>((long)this.GetHashCode(), "The caller {0} tries to query its' own org {1}", name, organizationId2);
                return(false);
            }
            partnerInfo = MailboxAccessPartnerInfoCache.Singleton.Get(new MailboxAccessPartnerInfoCacheKey(callerAdRecipient.Id, organizationId2));
            if (partnerInfo == PartnerInfo.Invalid)
            {
                ExTraceGlobals.FrameworkTracer.TraceDebug <string>((long)this.GetHashCode(), "The caller {0} could not be acted as mailbox access partner.", name);
                return(false);
            }
            if (!partnerInfo.HasPartnerRelationship(organizationId))
            {
                ExTraceGlobals.FrameworkTracer.TraceDebug <string, OrganizationId>((long)this.GetHashCode(), "The caller {0} has no partner relationship with organization {1}", name, organizationId);
                return(false);
            }
            targetTenant = smtpDomain.Domain;
            return(true);
        }
Beispiel #20
0
        private IPowerShellBudget GetBudget(HttpContext context)
        {
            if (context.User is DelegatedPrincipal)
            {
                using (new MonitoredScope("ThrottlingHttpModule", "AcquireDelegatedPrincipalBudget", HttpModuleHelper.HttpPerfMonitors))
                {
                    return(PowerShellBudget.Acquire(new DelegatedPrincipalBudgetKey((DelegatedPrincipal)context.User, BudgetType.WSMan)));
                }
            }
            if (context.CurrentUserToken() == null)
            {
                ExTraceGlobals.HttpModuleTracer.TraceDebug((long)this.GetHashCode(), "[ThrottlingHttpModule::GetBudget] No CAT.");
                return(null);
            }
            SecurityIdentifier userSid = context.CurrentUserToken().UserSid;

            if (userSid == null)
            {
                ExTraceGlobals.HttpModuleTracer.TraceDebug((long)this.GetHashCode(), "[ThrottlingHttpModule::GetBudget] sid = null.");
                return(null);
            }
            OrganizationId organization = context.CurrentUserToken().Organization;

            if (organization == null)
            {
                ExTraceGlobals.HttpModuleTracer.TraceDebug((long)this.GetHashCode(), "[ThrottlingHttpModule::GetBudget] orgId = null.");
                return(null);
            }
            ADObjectId adobjectId;

            if (organization.Equals(OrganizationId.ForestWideOrgId))
            {
                ExTraceGlobals.HttpModuleTracer.TraceDebug((long)this.GetHashCode(), "[ThrottlingHttpModule::GetBudget] Forest Wide Org Id.");
                adobjectId = ADSystemConfigurationSession.GetRootOrgContainerIdForLocalForest();
            }
            else
            {
                adobjectId = ADSystemConfigurationSession.GetRootOrgContainerId(organization.PartitionId.ForestFQDN, null, null);
            }
            ExTraceGlobals.HttpModuleTracer.TraceDebug <string>((long)this.GetHashCode(), "[ThrottlingHttpModule::GetBudget] rootOrgId = {0}.", (adobjectId == null) ? null : adobjectId.DistinguishedName);
            IPowerShellBudget result;

            using (new MonitoredScope("ThrottlingHttpModule", "AcquireBudget", HttpModuleHelper.HttpPerfMonitors))
            {
                result = PowerShellBudget.Acquire(userSid, BudgetType.WSMan, ADSessionSettings.FromOrganizationIdWithoutRbacScopes(adobjectId, organization, organization, true));
            }
            return(result);
        }
        public bool IsUserBypassingAudit(OrganizationId organizationId, SecurityIdentifier logonSid)
        {
            Util.ThrowOnNullArgument(organizationId, "organizationId");
            Util.ThrowOnNullArgument(logonSid, "logonSid");
            bool flag = this.GetOrganizationCache(organizationId).IsUserBypassingAudit(logonSid);

            if (flag)
            {
                return(true);
            }
            if (!organizationId.Equals(OrganizationId.ForestWideOrgId))
            {
                flag = this.GetOrganizationCache(OrganizationId.ForestWideOrgId).IsUserBypassingAudit(logonSid);
            }
            return(flag);
        }
Beispiel #22
0
 private void ReadRootDomainFromDc(OrganizationId orgId)
 {
     this.rootDomain = null;
     if (orgId.Equals(OrganizationId.ForestWideOrgId))
     {
         this.rootDomain = ADForest.GetLocalForest().FindRootDomain(true);
     }
     else
     {
         this.rootDomain = ADForest.GetForest(orgId.PartitionId).FindRootDomain(true);
     }
     if (this.rootDomain == null)
     {
         base.ThrowTerminatingError(new RootDomainNotFoundException(), ErrorCategory.InvalidData, null);
     }
     this.LogReadObject(this.rootDomain);
 }
Beispiel #23
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected override void Page_Load(object sender, EventArgs e)
        {
            base.Page_Load(sender, e);

            if (!Page.IsPostBack)
            {
                DataView projectsList = new DataView();
                // If filtering by user, determine which project a user belongs
                if (FilterByUser)
                {
                    ProjectManagementDa da = new ProjectManagementDa();
                    string uName           = new Caisis.Security.SecurityController().GetUserName();
                    UserDa uda             = new UserDa();
                    int    uId             = uda.GetUserId(uName);
                    projectsList = da.GetAllProjectsByUserId(uId).DefaultView;
                }
                // Else, user has access to all projects
                else
                {
                    //Project biz = new Project();
                    if (String.IsNullOrEmpty(OrganizationId) || OrganizationId.Equals("-1"))
                    {
                        //biz.GetAll();
                        //projectsList = biz.DataSourceView;
                        projectsList = BusinessObject.GetAllAsDataView <Project>();
                    }
                    else
                    {
                        ProjectManagementDa da = new ProjectManagementDa();
                        projectsList = da.GetAllProjectsForOrg(Int32.Parse(OrganizationId)).DefaultView;
                    }
                }
                // Force default sort to earliest records first
                //projectsList.Sort = Project.ProjectId + " ASC";

                // default sort
                projectsList.Sort = "Title";

                // SORTING DISABLED
                recordCount = projectsList.Count;

                // Bind projects to user's view
                BindProjectList(projectsList);
            }
        }
Beispiel #24
0
        public static ADObjectId GetDefaultRoleAssignmentPolicy(OrganizationId orgId)
        {
            if (orgId.Equals(OrganizationId.ForestWideOrgId))
            {
                return(null);
            }
            IConfigurationSession scopedSession = SharedConfiguration.CreateScopedToSharedConfigADSession(orgId);

            return(ProvisioningCache.Instance.TryAddAndGetOrganizationData <ADObjectId>(CannedProvisioningCacheKeys.MailboxRoleAssignmentPolicyCacheKey, orgId, delegate()
            {
                RoleAssignmentPolicy[] array = scopedSession.Find <RoleAssignmentPolicy>(null, QueryScope.SubTree, new ComparisonFilter(ComparisonOperator.Equal, RoleAssignmentPolicySchema.IsDefault, true), null, 1);
                if (array != null && array.Length > 0)
                {
                    return array[0].Id;
                }
                return null;
            }));
        }
Beispiel #25
0
        internal virtual OrganizationId ResolveOrganizationIdBasedOnIdentity(OrganizationId executingUserOrgId)
        {
            if (this.orgIdResolved)
            {
                return(this.resolvedOrganizationId);
            }
            if (!this.IsMultitenancyEnabled())
            {
                return(OrganizationId.ForestWideOrgId);
            }
            if (executingUserOrgId != null && !executingUserOrgId.Equals(OrganizationId.ForestWideOrgId))
            {
                return(executingUserOrgId);
            }
            ADObjectId id = null;
            string     text;
            string     text2;

            if (this.adObjectId != null)
            {
                this.resolvedOrganizationId = this.GetOrganizationId(executingUserOrgId, this.adObjectId);
            }
            else if (ADIdParameter.TryResolveCanonicalName(this.RawIdentity, out id))
            {
                this.resolvedOrganizationId = this.GetOrganizationId(executingUserOrgId, id);
            }
            else if (this.TryParseOrganizationName(out text, out text2))
            {
                if (this.IsWildcardDefined(text))
                {
                    this.resolvedOrganizationId = OrganizationId.ForestWideOrgId;
                }
                else
                {
                    this.resolvedOrganizationId = this.GetOrganizationId(executingUserOrgId, text);
                }
            }
            else
            {
                this.resolvedOrganizationId = null;
            }
            this.orgIdResolved = true;
            return(this.resolvedOrganizationId);
        }
        protected void ValidateCommonParamsAndSetOrg(UMDialPlanIdParameter dpParam, UMIPGatewayIdParameter gwParam, out Guid dpGuid, out Guid gwGuid, out string dpName, out string gwName)
        {
            dpGuid = Guid.Empty;
            gwGuid = Guid.Empty;
            dpName = string.Empty;
            gwName = string.Empty;
            if (dpParam == null && gwParam == null)
            {
                return;
            }
            IConfigurationSession session        = this.CreateSessionToResolveConfigObjects(false);
            OrganizationId        organizationId = null;

            if (dpParam != null)
            {
                UMDialPlan umdialPlan = (UMDialPlan)base.GetDataObject <UMDialPlan>(dpParam, session, null, new LocalizedString?(Strings.NonExistantDialPlan(dpParam.ToString())), new LocalizedString?(Strings.MultipleDialplansWithSameId(dpParam.ToString())));
                dpGuid         = umdialPlan.Guid;
                dpName         = umdialPlan.Name;
                organizationId = umdialPlan.OrganizationId;
            }
            if (gwParam != null)
            {
                UMIPGateway umipgateway = (UMIPGateway)base.GetDataObject <UMIPGateway>(gwParam, session, null, new LocalizedString?(Strings.NonExistantIPGateway(gwParam.ToString())), new LocalizedString?(Strings.MultipleIPGatewaysWithSameId(gwParam.ToString())));
                gwGuid = umipgateway.Guid;
                gwName = umipgateway.Name;
                if (organizationId != null && !organizationId.Equals(umipgateway.OrganizationId))
                {
                    base.WriteError(new InvalidParameterException(Strings.MismatchedOrgInDPAndGW(dpParam.ToString(), gwParam.ToString())), ErrorCategory.InvalidArgument, null);
                }
                else
                {
                    organizationId = umipgateway.OrganizationId;
                }
            }
            if (this.Organization != null)
            {
                organizationId != null;
            }
            if (organizationId != null)
            {
                base.CurrentOrganizationId = organizationId;
            }
        }
Beispiel #27
0
        public void BroadcastInvalidationMessage(OrganizationId orgId, Guid[] keys)
        {
            Guid orgId2 = Guid.Empty;

            if (orgId != null && !orgId.Equals(OrganizationId.ForestWideOrgId))
            {
                orgId2 = orgId.ConfigurationUnit.ObjectGuid;
                if (orgId2.Equals(Guid.Empty))
                {
                    return;
                }
            }
            InvalidationMessage invalidationMessage = new InvalidationMessage(orgId2, keys);

            byte[] msg = invalidationMessage.ToSendMessage();
            lock (this.sendSocketLockObj)
            {
                this.SendMessage(this.msgSendSocket, msg, this.msgSendEndPoint);
            }
        }
Beispiel #28
0
        private static IList <BackEndServer> GetBackEndServerListForDatabase(ADObjectId database, OrganizationId organizationId, SmtpAddress primarySmtpAddress, int maxServers)
        {
            if (maxServers == 0)
            {
                return(new BackEndServer[0]);
            }
            if (database == null)
            {
                return(BackEndLocator.GetBackEndServerListForOrganization(organizationId, maxServers));
            }
            string domainName = null;

            if (organizationId != null && !organizationId.Equals(OrganizationId.ForestWideOrgId))
            {
                domainName = primarySmtpAddress.Domain;
            }
            IList <BackEndServer> result;

            using (MailboxServerLocator mailboxServerLocator = MailboxServerLocator.Create(database.ObjectGuid, domainName, database.PartitionFQDN))
            {
                BackEndServer server = mailboxServerLocator.GetServer();
                ExTraceGlobals.CafeTracer.TraceDebug <BackEndServer, ADObjectId>(0L, "[BackEndLocator.GetBackEndServerByDatabase] Returns back end server {0} for database {1}", server, database);
                IList <BackEndServer> list = new List <BackEndServer>();
                list.Add(server);
                int num = 1;
                foreach (KeyValuePair <Guid, BackEndServer> keyValuePair in mailboxServerLocator.AvailabilityGroupServers)
                {
                    if (num >= maxServers)
                    {
                        break;
                    }
                    if (!string.Equals(keyValuePair.Value.Fqdn, server.Fqdn, StringComparison.OrdinalIgnoreCase))
                    {
                        list.Add(keyValuePair.Value);
                        num++;
                    }
                }
                result = list;
            }
            return(result);
        }
Beispiel #29
0
        // Token: 0x06000452 RID: 1106 RVA: 0x0000F624 File Offset: 0x0000D824
        internal static OrganizationIdParameter ResolveTargetOrganizationIdParameter(OrganizationIdParameter organizationParameter, IIdentityParameter identity, OrganizationId currentOrganizationId, Task.ErrorLoggerDelegate errorHandler, Task.TaskWarningLoggingDelegate warningHandler)
        {
            OrganizationIdParameter organizationIdParameter = null;

            if (identity != null)
            {
                if (identity is MailPublicFolderIdParameter)
                {
                    organizationIdParameter = (identity as MailPublicFolderIdParameter).Organization;
                }
                else if (identity is PublicFolderIdParameter)
                {
                    organizationIdParameter = (identity as PublicFolderIdParameter).Organization;
                }
            }
            if (!currentOrganizationId.Equals(OrganizationId.ForestWideOrgId))
            {
                if (organizationIdParameter != null)
                {
                    errorHandler(new ManagementObjectNotFoundException(Strings.ErrorManagementObjectNotFound(identity.ToString())), ExchangeErrorCategory.Client, identity);
                }
            }
            else
            {
                if (organizationParameter != null)
                {
                    if (organizationIdParameter != null)
                    {
                        warningHandler(Strings.WarningDuplicateOrganizationSpecified(organizationParameter.ToString(), organizationIdParameter.ToString()));
                    }
                    organizationIdParameter = organizationParameter;
                }
                if (organizationIdParameter == null && !(identity is MailPublicFolderIdParameter))
                {
                    errorHandler(new ErrorMissOrganizationException(), ExchangeErrorCategory.Client, null);
                }
            }
            return(organizationIdParameter);
        }
Beispiel #30
0
        private static BackEndServer GetBackEndServerByDatabase(ADObjectId database, OrganizationId organizationId, SmtpAddress primarySmtpAddress)
        {
            if (database == null)
            {
                return(BackEndLocator.GetBackEndServerByOrganization(organizationId));
            }
            string domainName = null;

            if (organizationId != null && !organizationId.Equals(OrganizationId.ForestWideOrgId))
            {
                domainName = primarySmtpAddress.Domain;
            }
            BackEndServer result;

            using (MailboxServerLocator mailboxServerLocator = MailboxServerLocator.Create(database.ObjectGuid, domainName, database.PartitionFQDN))
            {
                BackEndServer server = mailboxServerLocator.GetServer();
                ExTraceGlobals.CafeTracer.TraceDebug <BackEndServer, ADObjectId>(0L, "[BackEndLocator.GetBackEndServerByDatabase] Returns back end server {0} for database {1}", server, database);
                result = server;
            }
            return(result);
        }