コード例 #1
0
        // Token: 0x06000035 RID: 53 RVA: 0x00003678 File Offset: 0x00001878
        internal static string ResolveOrganizationName(HttpContext httpContext)
        {
            if (httpContext == null)
            {
                throw new ArgumentNullException("httpContext");
            }
            HttpRequest         request       = httpContext.Request;
            NameValueCollection urlProperties = RedirectionHelper.GetUrlProperties(request.Url);
            string text = null;

            foreach (string name in RedirectionHelper.tenantRedirectionPropertyNames)
            {
                if (!string.IsNullOrEmpty(urlProperties[name]))
                {
                    text = urlProperties[name];
                }
            }
            if (text == null && httpContext.Items["Cert-MemberOrg"] != null)
            {
                text = (string)httpContext.Items["Cert-MemberOrg"];
            }
            return(text);
        }
コード例 #2
0
        private static void OnPostAuthenticateRequest(object source, EventArgs args)
        {
            HttpApplication httpApplication = (HttpApplication)source;
            HttpContext     context         = httpApplication.Context;

            if (!context.Request.IsAuthenticated)
            {
                Logger.LogWarning(SessionKeyRedirectionModule.traceSrc, "OnPostAuthenticateRequest was called on a not Authenticated Request!");
                return;
            }
            string tenantName = SessionKeyRedirectionModule.ResolveTenantName();
            Uri    uri        = RedirectionHelper.RemovePropertiesFromOriginalUri(context.Request.Url, RedirectionConfig.RedirectionUriFilterProperties);

            if (SessionKeyRedirectionModule.ShouldAddSessionKey(uri, tenantName))
            {
                SessionKeyRedirectionModule.AddSessionKey(ref uri);
                Logger.LogVerbose(SessionKeyRedirectionModule.traceSrc, "Redirecting user to {0}.", new object[]
                {
                    uri
                });
                context.Response.Redirect(uri.ToString());
            }
        }
コード例 #3
0
 // Token: 0x06000032 RID: 50 RVA: 0x000034EC File Offset: 0x000016EC
 internal static Uri GetRedirectUrlForTenantSite(string domainName, string redirectTemplate, Uri originalUrl)
 {
     return(RedirectionHelper.GetRedirectUrlForTenantSite(domainName, redirectTemplate, originalUrl, null));
 }
コード例 #4
0
        // Token: 0x0600003C RID: 60 RVA: 0x00003964 File Offset: 0x00001B64
        internal static ExchangeConfigurationUnit ResolveConfigurationUnitByName(string domainName)
        {
            ITenantConfigurationSession session = DirectorySessionFactory.Default.CreateTenantConfigurationSession(ConsistencyMode.IgnoreInvalid, ADSessionSettings.FromTenantAcceptedDomain(domainName), 454, "ResolveConfigurationUnitByName", "f:\\15.00.1497\\sources\\dev\\Configuration\\src\\RedirectionModule\\RedirectionHelper.cs");

            return(RedirectionHelper.ResolveConfigurationUnitByName(domainName, session));
        }
コード例 #5
0
 // Token: 0x06000034 RID: 52 RVA: 0x0000365C File Offset: 0x0000185C
 internal static bool ShouldProcessLiveIdRedirection(HttpContext context)
 {
     return(!(context.User is DelegatedPrincipal) && string.IsNullOrEmpty(RedirectionHelper.ResolveOrganizationName(context)));
 }
コード例 #6
0
		// Token: 0x06000014 RID: 20 RVA: 0x00002B48 File Offset: 0x00000D48
		private static void OnPostAuthenticateRequest(object source, EventArgs args)
		{
			HttpApplication httpApplication = (HttpApplication)source;
			HttpContext context = httpApplication.Context;
			Logger.EnterFunction(ExTraceGlobals.RedirectionTracer, "LiveIdRedirectionModule.OnPostAuthenticateRequest");
			if (!context.Request.IsAuthenticated)
			{
				Logger.LogWarning(LiveIdRedirectionModule.traceSrc, "OnPostAuthenticateRequest was called on a not Authenticated Request!");
				Logger.ExitFunction(ExTraceGlobals.RedirectionTracer, "LiveIdRedirectionModule.OnPostAuthenticateRequest");
				return;
			}
			if (!RedirectionHelper.ShouldProcessLiveIdRedirection(context))
			{
				Logger.LogVerbose(LiveIdRedirectionModule.traceSrc, "Redirection Logic skipped for user '{0}'.", new object[]
				{
					context.User.ToString()
				});
				Logger.ExitFunction(ExTraceGlobals.RedirectionTracer, "LiveIdRedirectionModule.OnPostAuthenticateRequest");
				return;
			}
			bool flag = true;
			string text = null;
			string text2 = (string)HttpContext.Current.Items["WLID-MemberName"];
			if (RedirectionHelper.IsUserTenantOnCurrentSiteCache(text2))
			{
				Logger.LogVerbose(LiveIdRedirectionModule.traceSrc, "Redirection Logic skipped, user '{0}' is present on the current site cache.", new object[]
				{
					text2
				});
				Logger.ExitFunction(ExTraceGlobals.RedirectionTracer, "LiveIdRedirectionModule.OnPostAuthenticateRequest");
				return;
			}
			if (context.Request.LogonUserIdentity.IsSystem && !(context.User.Identity is GenericSidIdentity) && !string.IsNullOrEmpty(text2))
			{
				flag = false;
				if (!SmtpAddress.IsValidSmtpAddress(text2))
				{
					Logger.LogWarning(LiveIdRedirectionModule.traceSrc, "Cannot convert memberName to SMTP address. No redirection available.");
					Logger.ExitFunction(ExTraceGlobals.RedirectionTracer, "LiveIdRedirectionModule.OnPostAuthenticateRequest");
					return;
				}
				text = SmtpAddress.Parse(text2).Domain;
			}
			else
			{
				if (!LiveIdRedirectionModule.TryResolveCurrentUserInLocalForest(context.User, LiveIdRedirectionModule.traceSrc, out text))
				{
					Logger.LogWarning(LiveIdRedirectionModule.traceSrc, "Cannot resolve the current request user account in local forest.");
					Logger.ExitFunction(ExTraceGlobals.RedirectionTracer, "LiveIdRedirectionModule.OnPostAuthenticateRequest");
					return;
				}
				if (string.IsNullOrEmpty(text))
				{
					Logger.LogVerbose(LiveIdRedirectionModule.traceSrc, "Tenant Name cannot be resolved from the Url.");
					Logger.ExitFunction(ExTraceGlobals.RedirectionTracer, "LiveIdRedirectionModule.OnPostAuthenticateRequest");
					return;
				}
			}
			TenantMonitor.LogActivity(CounterType.HomeSiteLocationAttempts, text);
			Uri originalUrl = RedirectionHelper.RemovePropertiesFromOriginalUri(context.Request.Url, RedirectionConfig.RedirectionUriFilterProperties);
			if (!flag)
			{
				Logger.LogVerbose(LiveIdRedirectionModule.traceSrc, "Current request user is external to local AD.");
				Uri redirectUrlForTenantForest = RedirectionHelper.GetRedirectUrlForTenantForest(text, RedirectionConfig.PodRedirectTemplate, originalUrl, RedirectionConfig.PodSiteStartRange, RedirectionConfig.PodSiteEndRange);
				if (null != redirectUrlForTenantForest)
				{
					Logger.LogVerbose(LiveIdRedirectionModule.traceSrc, "Redirecting user to {0}.", new object[]
					{
						redirectUrlForTenantForest
					});
					context.Response.Redirect(redirectUrlForTenantForest.ToString());
					TenantMonitor.LogActivity(CounterType.HomeSiteLocationSuccesses, text);
				}
				else
				{
					Logger.LogEvent(LiveIdRedirectionModule.eventLogger, TaskEventLogConstants.Tuple_LiveIdRedirection_FailedToResolveForestRedirection, text2, new object[]
					{
						text,
						text2
					});
				}
			}
			else
			{
				Logger.LogVerbose(LiveIdRedirectionModule.traceSrc, "Current request user is present in AD.");
				Uri uri = null;
				Exception ex = null;
				try
				{
					uri = RedirectionHelper.GetRedirectUrlForTenantSite(text, RedirectionConfig.SiteRedirectTemplate, originalUrl, LiveIdRedirectionModule.eventLogger);
					TenantMonitor.LogActivity(CounterType.HomeSiteLocationSuccesses, text);
				}
				catch (RedirectionLogicException ex2)
				{
					ex = ex2;
				}
				catch (DataSourceOperationException ex3)
				{
					ex = ex3;
				}
				catch (TransientException ex4)
				{
					ex = ex4;
				}
				catch (DataValidationException ex5)
				{
					ex = ex5;
				}
				if (ex != null)
				{
					Logger.GenerateErrorMessage(context.Response, LiveIdRedirectionModule.eventLogger, TaskEventLogConstants.Tuple_LiveIdRedirection_ServerError, ex, text);
				}
				else if (null != uri)
				{
					Logger.LogVerbose(LiveIdRedirectionModule.traceSrc, "Redirecting user to {0}.", new object[]
					{
						uri
					});
					context.Response.Redirect(uri.ToString());
				}
				else
				{
					RedirectionHelper.AddTenantToCurrentSiteCache(text);
				}
			}
			Logger.ExitFunction(ExTraceGlobals.RedirectionTracer, "LiveIdRedirectionModule.OnPostAuthenticateRequest");
		}