// Token: 0x060004C0 RID: 1216 RVA: 0x0001A2AC File Offset: 0x000184AC protected AnchorMailbox TryGetAnchorMailboxFromWsSecurityRequest() { if (!this.IsWsSecurityRequest) { return(null); } if (ExTraceGlobals.VerboseTracer.IsTraceEnabled(1)) { ExTraceGlobals.VerboseTracer.TraceDebug <int>((long)this.GetHashCode(), "[BEServerCookieProxyRequestHandler::TryGetAnchorMailboxFromWsSecurityRequest]: Context {0}; WSSecurity request.", base.TraceContext); } WsSecurityParser @object = new WsSecurityParser(base.TraceContext); bool flag = false; string address; if (base.ClientRequest.IsPartnerAuthRequest()) { address = base.ParseClientRequest <string>(new Func <Stream, string>(@object.FindAddressFromPartnerAuthRequest), 73628); } else if (base.ClientRequest.IsX509CertAuthRequest()) { address = base.ParseClientRequest <string>(new Func <Stream, string>(@object.FindAddressFromX509CertAuthRequest), 73628); } else { KeyValuePair <string, bool> keyValuePair = base.ParseClientRequest <KeyValuePair <string, bool> >(new Func <Stream, KeyValuePair <string, bool> >(@object.FindAddressFromWsSecurityRequest), 73628); flag = keyValuePair.Value; address = keyValuePair.Key; } if (flag) { base.Logger.Set(3, "WSSecurityRequest-DelegationToken-Random"); return(new AnonymousAnchorMailbox(this)); } return(AnchorMailboxFactory.CreateFromSamlTokenAddress(address, this)); }
public static AnchorMailbox CreateFromCaller(IRequestContext requestContext) { if (requestContext == null) { throw new ArgumentNullException("requestContext"); } CommonAccessToken commonAccessToken = requestContext.HttpContext.Items["Item-CommonAccessToken"] as CommonAccessToken; if (commonAccessToken != null) { AnchorMailbox anchorMailbox = AnchorMailboxFactory.TryCreateFromCommonAccessToken(commonAccessToken, requestContext); if (anchorMailbox != null) { return(anchorMailbox); } } if (requestContext.HttpContext.User == null || requestContext.HttpContext.User.Identity == null) { requestContext.Logger.SafeSet(HttpProxyMetadata.RoutingHint, "UnauthenticatedRequest-RandomBackEnd"); return(new AnonymousAnchorMailbox(requestContext)); } WindowsIdentity windowsIdentity = requestContext.HttpContext.User.Identity as WindowsIdentity; if (windowsIdentity != null && windowsIdentity.User == null) { requestContext.Logger.SafeSet(HttpProxyMetadata.RoutingHint, "AnonymousRequest-RandomBackEnd"); return(new AnonymousAnchorMailbox(requestContext)); } return(AnchorMailboxFactory.CreateFromLogonIdentity(requestContext)); }
public static bool TryCreateFromMailboxGuid(IRequestContext requestContext, string anchorMailboxAddress, out AnchorMailbox anchorMailbox) { anchorMailbox = null; Guid mailboxGuid; string domain; if (AnchorMailboxFactory.TryGetMailboxGuid(anchorMailboxAddress, out mailboxGuid, out domain, requestContext)) { requestContext.Logger.SafeSet(HttpProxyMetadata.RoutingHint, "URL-MailboxGuidWithDomain"); anchorMailbox = new MailboxGuidAnchorMailbox(mailboxGuid, domain, requestContext); return(true); } return(false); }
// Token: 0x0600073B RID: 1851 RVA: 0x0002A6F4 File Offset: 0x000288F4 protected override AnchorMailbox ResolveAnchorMailbox() { if (ExTraceGlobals.VerboseTracer.IsTraceEnabled(1)) { ExTraceGlobals.VerboseTracer.TraceDebug <string, Uri>((long)this.GetHashCode(), "[SiteMailboxCreatingProxyRequestHandler::ResolveAnchorMailbox]: Method {0}; Url {1};", base.ClientRequest.HttpMethod, base.ClientRequest.Url); } if (!Utilities.IsPartnerHostedOnly && !GlobalConfiguration.GetSnapshot(MachineSettingsContext.Local, null, null).MultiTenancy.Enabled) { base.Logger.Set(3, "SiteMailboxCreating-ServerVersion"); return(new ServerVersionAnchorMailbox <EcpService>(new ServerVersion(Server.E15MinVersion), 0, this)); } AnchorMailbox anchorMailbox = AnchorMailboxFactory.CreateFromCaller(this); if (anchorMailbox is AnonymousAnchorMailbox) { return(anchorMailbox); } if (anchorMailbox is DomainAnchorMailbox || anchorMailbox is OrganizationAnchorMailbox) { return(anchorMailbox); } SidAnchorMailbox sidAnchorMailbox = anchorMailbox as SidAnchorMailbox; if (sidAnchorMailbox != null) { if (sidAnchorMailbox.OrganizationId == null) { throw new InvalidOperationException(string.Format("OrganizationId is null for site mailbox proxy {0}.", anchorMailbox.ToString())); } base.Logger.Set(3, "SiteMailboxCreating-Organization"); return(new OrganizationAnchorMailbox(sidAnchorMailbox.OrganizationId, this)); } else { UserBasedAnchorMailbox userBasedAnchorMailbox = anchorMailbox as UserBasedAnchorMailbox; if (userBasedAnchorMailbox == null) { throw new InvalidOperationException(string.Format("Unknown site mailbox proxy {0}.", anchorMailbox.ToString())); } OrganizationId organizationId = (OrganizationId)userBasedAnchorMailbox.GetADRawEntry()[ADObjectSchema.OrganizationId]; if (organizationId == null) { throw new InvalidOperationException(string.Format("OrganizationId is null for site mailbox proxy {0}.", anchorMailbox.ToString())); } base.Logger.Set(3, "SiteMailboxCreating-Organization"); return(new OrganizationAnchorMailbox(organizationId, this)); } }
// Token: 0x0600051C RID: 1308 RVA: 0x0001C7CC File Offset: 0x0001A9CC protected override AnchorMailbox ResolveAnchorMailbox() { if (this.skipTargetBackEndCalculation) { base.Logger.Set(3, "OrgRelationship-Anonymous"); return(new AnonymousAnchorMailbox(this)); } if (base.UseRoutingHintForAnchorMailbox) { string text; if (RequestPathParser.IsAutodiscoverV2PreviewRequest(base.ClientRequest.Url.AbsolutePath)) { text = base.ClientRequest.Params["Email"]; } else if (RequestPathParser.IsAutodiscoverV2Version1Request(base.ClientRequest.Url.AbsolutePath)) { int num = base.ClientRequest.Url.AbsolutePath.LastIndexOf('/'); text = base.ClientRequest.Url.AbsolutePath.Substring(num + 1); } else { text = this.TryGetExplicitLogonNode(0); } string text2; if (ExplicitLogonParser.TryGetNormalizedExplicitLogonAddress(text, ref text2) && SmtpAddress.IsValidSmtpAddress(text2)) { this.isExplicitLogonRequest = true; this.explicitLogonAddress = text; if (HttpProxySettings.NoMailboxFallbackRoutingEnabled.Value) { base.IsAnchorMailboxFromRoutingHint = true; } bool failOnDomainNotFound = !RequestPathParser.IsAutodiscoverV2Request(base.ClientRequest.Url.AbsolutePath); if (this.preferAnchorMailboxHeader) { string text3 = base.ClientRequest.Headers[Constants.AnchorMailboxHeaderName]; if (!string.IsNullOrEmpty(text3) && !StringComparer.OrdinalIgnoreCase.Equals(text3, text2) && SmtpAddress.IsValidSmtpAddress(text3)) { return(AnchorMailboxFactory.ParseAnchorMailboxFromSmtp(this, text3, "AnchorMailboxHeader", failOnDomainNotFound)); } } return(AnchorMailboxFactory.ParseAnchorMailboxFromSmtp(this, text2, "ExplicitLogon", failOnDomainNotFound)); } } return(base.ResolveAnchorMailbox()); }
private void RedirectIfNeeded() { if (!this.IsSecurityTokenPresent()) { UserBasedAnchorMailbox userBasedAnchorMailbox = AnchorMailboxFactory.CreateFromCaller(this) as UserBasedAnchorMailbox; if (userBasedAnchorMailbox != null) { ADRawEntry adrawEntry = userBasedAnchorMailbox.GetADRawEntry(); ExTraceGlobals.VerboseTracer.TraceDebug <UserBasedAnchorMailbox, ExchangeObjectVersion>((long)this.GetHashCode(), "[RemotePowerShellProxyRequestHandler::RedirectIfNeeded] Redirect if the user is in E14 forest. User: {0}; ExchangeVersion: {1}", userBasedAnchorMailbox, adrawEntry.ExchangeVersion); if (adrawEntry.ExchangeVersion.IsOlderThan(ExchangeObjectVersion.Exchange2012)) { base.Logger.AppendGenericInfo("RedirectReason", "NoSecurityTokenAndOlderThanE15"); base.DatacenterRedirectStrategy.RedirectMailbox(userBasedAnchorMailbox); } } } }
protected override AnchorMailbox ResolveAnchorMailbox() { string text = base.HttpContext.Items["destination"] as string; Uri uri; if (!Uri.TryCreate(text, UriKind.Absolute, out uri)) { throw new HttpException(400, "destination value is not valid"); } string text2 = null; bool flag2; string text3; bool flag = FbaFormPostProxyRequestHandler.IsExplicitLogon(HttpRuntime.AppDomainAppVirtualPath, uri.PathAndQuery, uri.OriginalString, out flag2, out text2, out text3); if (flag) { this.explicitLogonUser = text2; } AnchorMailbox anchorMailbox; if (!string.IsNullOrEmpty(this.explicitLogonUser)) { anchorMailbox = new SmtpAnchorMailbox(this.explicitLogonUser, this); } else { anchorMailbox = AnchorMailboxFactory.CreateFromCaller(this); } UserBasedAnchorMailbox userBasedAnchorMailbox = anchorMailbox as UserBasedAnchorMailbox; if (userBasedAnchorMailbox != null) { if (UrlUtilities.IsEacUrl(text)) { userBasedAnchorMailbox.CacheKeyPostfix = "_EAC"; } else { userBasedAnchorMailbox.MissingDatabaseHandler = new Func <ADRawEntry, ADObjectId>(base.ResolveMailboxDatabase); } } return(anchorMailbox); }
// Token: 0x0600073D RID: 1853 RVA: 0x0002A870 File Offset: 0x00028A70 protected override AnchorMailbox ResolveAnchorMailbox() { string mailboxId = WopiRequestPathHandler.GetMailboxId(base.ClientRequest); if (!string.IsNullOrEmpty(mailboxId)) { this.targetMailboxId = mailboxId; AnchorMailbox result; if (AnchorMailboxFactory.TryCreateFromMailboxGuid(this, mailboxId, out result)) { return(result); } if (SmtpAddress.IsValidSmtpAddress(mailboxId)) { base.Logger.Set(3, "Url-SMTP"); return(new SmtpAnchorMailbox(mailboxId, this)); } } return(base.ResolveAnchorMailbox()); }
protected override AnchorMailbox ResolveAnchorMailbox() { UriBuilder uriBuilder = new UriBuilder(base.ClientRequest.Url); uriBuilder.Scheme = "https"; uriBuilder.Port = 444; string userEmailAddress = WopiRequestPathHandler.GetUserEmailAddress(base.ClientRequest); if (string.IsNullOrEmpty(userEmailAddress)) { return(base.ResolveAnchorMailbox()); } this.targetMailboxId = userEmailAddress; AnchorMailbox result; if (AnchorMailboxFactory.TryCreateFromMailboxGuid(this, userEmailAddress, out result)) { return(result); } base.Logger.Set(HttpProxyMetadata.RoutingHint, "Url-SMTP"); return(new SmtpAnchorMailbox(userEmailAddress, this)); }
// Token: 0x060000E5 RID: 229 RVA: 0x000055DC File Offset: 0x000037DC public static AnchorMailbox CreateFromCaller(IRequestContext requestContext) { if (requestContext == null) { throw new ArgumentNullException("requestContext"); } CommonAccessToken commonAccessToken = requestContext.HttpContext.Items["Item-CommonAccessToken"] as CommonAccessToken; if (commonAccessToken != null) { AnchorMailbox anchorMailbox = AnchorMailboxFactory.TryCreateFromCommonAccessToken(commonAccessToken, requestContext); if (anchorMailbox != null) { return(anchorMailbox); } } if (requestContext.HttpContext.User == null || requestContext.HttpContext.User.Identity == null) { requestContext.Logger.SafeSet(3, "UnauthenticatedRequest-RandomBackEnd"); return(new AnonymousAnchorMailbox(requestContext)); } if (HttpProxySettings.IdentityIndependentAuthBehaviorEnabled.Value && requestContext.AuthBehavior.AuthState != AuthState.FrontEndFullAuth) { AnchorMailbox anchorMailbox2 = requestContext.AuthBehavior.CreateAuthModuleSpecificAnchorMailbox(requestContext); if (anchorMailbox2 != null) { return(anchorMailbox2); } } WindowsIdentity windowsIdentity = requestContext.HttpContext.User.Identity as WindowsIdentity; if (windowsIdentity != null && windowsIdentity.User == null) { requestContext.Logger.SafeSet(3, "AnonymousRequest-RandomBackEnd"); return(new AnonymousAnchorMailbox(requestContext)); } return(AnchorMailboxFactory.CreateFromLogonIdentity(requestContext)); }
// Token: 0x06000539 RID: 1337 RVA: 0x0001CFAC File Offset: 0x0001B1AC protected override AnchorMailbox ResolveAnchorMailbox() { UriBuilder uriBuilder = new UriBuilder(base.ClientRequest.Url); uriBuilder.Scheme = "https"; uriBuilder.Port = 444; string mailboxId = AuthenticatedWopiRequestPathHandler.GetMailboxId(base.ClientRequest); if (!string.IsNullOrEmpty(mailboxId)) { this.targetMailboxId = mailboxId; AnchorMailbox result; if (AnchorMailboxFactory.TryCreateFromMailboxGuid(this, mailboxId, out result)) { return(result); } if (SmtpAddress.IsValidSmtpAddress(mailboxId)) { base.Logger.Set(3, "Url-SMTP"); return(new SmtpAnchorMailbox(mailboxId, this)); } } return(base.ResolveAnchorMailbox()); }
// Token: 0x060004BD RID: 1213 RVA: 0x0001A12C File Offset: 0x0001832C protected override AnchorMailbox ResolveAnchorMailbox() { AnchorMailbox anchorMailbox = null; if (!base.HasPreemptivelyCheckedForRoutingHint) { anchorMailbox = base.CreateAnchorMailboxFromRoutingHint(); } if (anchorMailbox != null) { return(anchorMailbox); } anchorMailbox = this.TryGetAnchorMailboxFromWsSecurityRequest(); if (anchorMailbox != null) { return(anchorMailbox); } anchorMailbox = this.TryGetAnchorMailboxFromDomainBasedRequest(); if (anchorMailbox != null) { return(anchorMailbox); } return(AnchorMailboxFactory.CreateFromCaller(this)); }