예제 #1
0
 internal ADSessionSettings GetTenantScopedADSessionSettingsServiceOnly()
 {
     if (this.externalDirectoryOrganizationId != null)
     {
         ExTraceGlobals.GetConnectionTracer.TraceDebug <string>(0L, "FromTenantPartitionHint(): Partition hint '{0}' has externalDirectoryOrganizationId initialized, no need to lookup", this.ToString());
         if (this.externalDirectoryOrganizationId == TenantPartitionHint.ExternalDirectoryOrganizationIdForRootOrg)
         {
             return(ADSessionSettings.FromRootOrgScopeSet());
         }
         return(ADSessionSettings.FromExternalDirectoryOrganizationId(this.externalDirectoryOrganizationId.Value));
     }
     else
     {
         ADSessionSettings           sessionSettings            = ADSessionSettings.FromAllTenantsPartitionId(this.partitionId);
         ITenantConfigurationSession tenantConfigurationSession = DirectorySessionFactory.Default.CreateTenantConfigurationSession(ConsistencyMode.PartiallyConsistent, sessionSettings, 442, "GetTenantScopedADSessionSettingsServiceOnly", "f:\\15.00.1497\\sources\\dev\\data\\src\\directory\\TenantPartitionHint.cs");
         ExTraceGlobals.GetConnectionTracer.TraceDebug <TenantPartitionHint>(0L, "FromTenantPartitionHint(): Partition hint '{0}' has externalDirectoryOrganizationId not initialized, need to read this property from AD, looking up", this);
         ExchangeConfigurationUnit exchangeConfigurationUnitByName = tenantConfigurationSession.GetExchangeConfigurationUnitByName(this.tenantName);
         if (exchangeConfigurationUnitByName != null)
         {
             ExTraceGlobals.GetConnectionTracer.TraceDebug <TenantPartitionHint>(0L, "FromTenantPartitionHint(): Partition hint '{0}' has PartitionId and tenantName initialized, reading this OrganizationId property from CU", this);
             return(ADSessionSettings.FromOrganizationIdWithoutRbacScopesServiceOnly(exchangeConfigurationUnitByName.OrganizationId));
         }
         ExTraceGlobals.GetConnectionTracer.TraceDebug <TenantPartitionHint>(0L, "FromTenantPartitionHint(): Partition hint '{0}' has partitionId and tenantName initialized, but failed to find this tenant's CU", this);
         Globals.LogEvent(DirectoryEventLogConstants.Tuple_CannotResolveExternalDirectoryOrganizationId, this.tenantName, new object[]
         {
             DirectoryStrings.CannotResolveTenantName(this.tenantName),
             Environment.StackTrace
         });
         throw new CannotResolveExternalDirectoryOrganizationIdException(DirectoryStrings.CannotResolveTenantName(this.tenantName));
     }
 }
        internal override ADSessionSettings FromExternalDirectoryOrganizationId(Guid externalDirectoryOrganizationId)
        {
            if (externalDirectoryOrganizationId == TemplateTenantConfiguration.TemplateTenantExternalDirectoryOrganizationIdGuid)
            {
                return(ADSessionSettings.FromConsumerOrganization());
            }
            OrganizationId scopingOrganizationId = OrganizationId.FromExternalDirectoryOrganizationId(externalDirectoryOrganizationId);

            return(ADSessionSettings.FromOrganizationIdWithoutRbacScopesServiceOnly(scopingOrganizationId));
        }
예제 #3
0
 internal static ADSessionSettings FromConsumerOrganization()
 {
     return(ADSessionSettings.InvokeWithAPILogging <ADSessionSettings>(delegate
     {
         ExchangeConfigurationUnit localTemplateTenant = TemplateTenantConfiguration.GetLocalTemplateTenant();
         if (localTemplateTenant == null)
         {
             throw new ADTransientException(DirectoryStrings.CannotFindTemplateTenant);
         }
         return ADSessionSettings.FromOrganizationIdWithoutRbacScopesServiceOnly(localTemplateTenant.OrganizationId);
     }, "FromConsumerOrganization"));
 }
예제 #4
0
        private ExchangeConfigurationUnit ReadCU()
        {
            ADSessionSettings         sessionSettings = ADSessionSettings.FromOrganizationIdWithoutRbacScopesServiceOnly(this);
            IConfigurationSession     tenantOrTopologyConfigurationSession = DirectorySessionFactory.Default.GetTenantOrTopologyConfigurationSession(ConsistencyMode.IgnoreInvalid, sessionSettings, 671, "ReadCU", "f:\\15.00.1497\\sources\\dev\\data\\src\\directory\\OrganizationId.cs");
            ExchangeConfigurationUnit exchangeConfigurationUnit            = tenantOrTopologyConfigurationSession.Read <ExchangeConfigurationUnit>(this.ConfigurationUnit);

            if (exchangeConfigurationUnit == null)
            {
                throw new CannotResolveTenantNameException(DirectoryStrings.TenantOrgContainerNotFoundException(this.configUnit.DistinguishedName));
            }
            return(exchangeConfigurationUnit);
        }
        internal override ADSessionSettings FromTenantAcceptedDomain(string domain)
        {
            if (domain == null)
            {
                throw new ArgumentNullException("domain");
            }
            SmtpDomain domainName;

            if (!SmtpDomain.TryParse(domain, out domainName))
            {
                throw new CannotResolveTenantNameException(DirectoryStrings.CannotResolveTenantNameByAcceptedDomain(domain));
            }
            if (ConsumerIdentityHelper.IsConsumerDomain(domainName))
            {
                return(ADSessionSettings.FromConsumerOrganization());
            }
            OrganizationId scopingOrganizationId = OrganizationId.FromAcceptedDomain(domain);

            return(ADSessionSettings.FromOrganizationIdWithoutRbacScopesServiceOnly(scopingOrganizationId));
        }
        public static OwaMailboxPolicy GetDefaultOwaMailboxPolicy(OrganizationId orgId)
        {
            IConfigurationSession tenantOrTopologyConfigurationSession = DirectorySessionFactory.Default.GetTenantOrTopologyConfigurationSession(ConsistencyMode.PartiallyConsistent, ADSessionSettings.FromOrganizationIdWithoutRbacScopesServiceOnly(orgId), 161, "GetDefaultOwaMailboxPolicy", "f:\\15.00.1497\\sources\\dev\\data\\src\\directory\\OwaSegmentationSettings.cs");

            OwaMailboxPolicy[] array = tenantOrTopologyConfigurationSession.Find <OwaMailboxPolicy>(null, QueryScope.SubTree, new ComparisonFilter(ComparisonOperator.Equal, OwaMailboxPolicySchema.IsDefault, true), new SortBy(ADObjectSchema.WhenChanged, SortOrder.Descending), 1);
            if (array != null && array.Length > 0)
            {
                return(array[0]);
            }
            return(null);
        }
        internal override ADSessionSettings FromTenantMSAUser(string msaUserNetID)
        {
            OrganizationId scopingOrganizationId = OrganizationId.FromMSAUserNetID(msaUserNetID);

            return(ADSessionSettings.FromOrganizationIdWithoutRbacScopesServiceOnly(scopingOrganizationId));
        }
        internal override ADSessionSettings FromTenantForestAndCN(string exoAccountForest, string exoTenantContainer)
        {
            OrganizationId scopingOrganizationId = OrganizationId.FromTenantForestAndCN(exoAccountForest, exoTenantContainer);

            return(ADSessionSettings.FromOrganizationIdWithoutRbacScopesServiceOnly(scopingOrganizationId));
        }