Example #1
0
 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();
     }
 }
Example #2
0
        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);
        }
Example #5
0
        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);
        }