protected XsoMailboxDataProviderBase(ExchangePrincipal mailboxOwner, ISecurityAccessToken userToken, string action) { using (DisposeGuard disposeGuard = this.Guard()) { Util.ThrowOnNullArgument(mailboxOwner, "mailboxOwner"); Util.ThrowOnNullOrEmptyArgument(action, "action"); if (userToken == null) { this.MailboxSession = MailboxSession.Open(mailboxOwner, new WindowsPrincipal(WindowsIdentity.GetCurrent()), CultureInfo.InvariantCulture, string.Format("Client=Management;Action={0}", action)); } else { try { using (ClientSecurityContext clientSecurityContext = new ClientSecurityContext(userToken, AuthzFlags.AuthzSkipTokenGroups)) { clientSecurityContext.SetSecurityAccessToken(userToken); this.MailboxSession = MailboxSession.Open(mailboxOwner, clientSecurityContext, CultureInfo.InvariantCulture, string.Format("Client=Management;Action={0}", action)); } } catch (AuthzException ex) { throw new AccessDeniedException(new LocalizedString(ex.Message)); } } disposeGuard.Success(); } }
internal static MailboxSession OpenMailboxSessionAsOwner(ExchangePrincipal principal, ISecurityAccessToken userToken, string taskName) { TaskLogger.LogEnter(); MailboxSession result = null; if (principal == null) { throw new ArgumentNullException("principal"); } if (string.IsNullOrEmpty(taskName)) { throw new ArgumentNullException("taskName"); } if (userToken == null) { result = MailboxSession.Open(principal, new WindowsPrincipal(WindowsIdentity.GetCurrent()), CultureInfo.InvariantCulture, string.Format("Client=Management;Action={0}", taskName)); } else { try { using (ClientSecurityContext clientSecurityContext = new ClientSecurityContext(userToken, AuthzFlags.AuthzSkipTokenGroups)) { clientSecurityContext.SetSecurityAccessToken(userToken); result = MailboxSession.Open(principal, clientSecurityContext, CultureInfo.InvariantCulture, string.Format("Client=Management;Action={0}", taskName)); } } catch (AuthzException ex) { throw new AccessDeniedException(new LocalizedString(ex.Message)); } } TaskLogger.LogExit(); return(result); }
internal MailboxSession CreateMailboxSession(ExchangePrincipal exchangePrincipal, CultureInfo cultureInfo, string userContextString) { ExTraceGlobals.CoreCallTracer.TraceDebug(0L, "OwaClientSecurityContextIdentity.CreateMailboxSession"); MailboxSession result; try { MailboxSession mailboxSession = MailboxSession.Open(exchangePrincipal, this.clientSecurityContext, cultureInfo, userContextString); result = mailboxSession; } catch (AccessDeniedException innerException) { throw new OwaExplicitLogonException("User has no access rights to the mailbox", "ErrorExplicitLogonAccessDenied", innerException); } return(result); }
// Token: 0x06000D66 RID: 3430 RVA: 0x00059670 File Offset: 0x00057870 internal override MailboxSession CreateMailboxSession(IExchangePrincipal exchangePrincipal, CultureInfo cultureInfo, HttpRequest clientRequest) { ExTraceGlobals.CoreCallTracer.TraceDebug(0L, "OwaClientSecurityContextIdentity.CreateMailboxSession"); MailboxSession result; try { MailboxSession mailboxSession = MailboxSession.Open(exchangePrincipal, this.clientSecurityContext, cultureInfo, "Client=OWA;Action=ViaProxy"); GccUtils.SetStoreSessionClientIPEndpointsFromHttpRequest(mailboxSession, clientRequest); result = mailboxSession; } catch (AccessDeniedException innerException) { throw new OwaExplicitLogonException("User has no access rights to the mailbox", LocalizedStrings.GetNonEncoded(882888134), innerException); } return(result); }
private bool CanOpenAccessedUserMailbox() { bool result = false; if (this.LogonUserIdentity.AuthenticationType != DelegatedPrincipal.DelegatedAuthenticationType) { if (this.logonUserSid.Value == this.accessedUserSid.Value) { result = true; this.logonUserEsoSelf = true; } else { try { using (ClientSecurityContext clientSecurityContext = this.logonUserPrincipal.Identity.CreateClientSecurityContext(true)) { using (ClientSecurityContext clientSecurityContext2 = Util.IsDataCenter ? null : EcpIdentity.TryMungeTokenFromSlaveAccount(clientSecurityContext)) { using (MailboxSession.Open(this.accessedUserExchangePrincipal, clientSecurityContext2 ?? clientSecurityContext, CultureInfo.CurrentCulture, "Client=Management;Action=ECP")) { } } } result = true; } catch (ConnectionFailedTransientException ex) { if (!(ex.InnerException is MapiExceptionLogonFailed)) { throw; } } catch (StoragePermanentException) { } } } return(result); }