internal ProxyAuthenticator GetProxyAuthenticatorForAutoDiscover(Uri uri, SerializedSecurityContext serializedSecurityContext, string messageId)
 {
     if (this.AccessMethod == AvailabilityAccessMethod.OrgWideFBBasic && this.Credentials != null)
     {
         return(ProxyAuthenticator.Create(new CredentialCache
         {
             {
                 uri,
                 "Basic",
                 this.Credentials
             }
         }, serializedSecurityContext, messageId));
     }
     return(ProxyAuthenticator.Create(this.Credentials, serializedSecurityContext, messageId));
 }
Exemple #2
0
        private AutoDiscoverResult GetResult(RecipientData recipientData, WebServiceUri webServiceUri)
        {
            if (!base.Application.IsVersionSupported(webServiceUri.ServerVersion))
            {
                AutoDiscoverQuery.AutoDiscoverTracer.TraceError <object, int, Type>((long)this.GetHashCode(), "{0}: Remote server version {1} is considered a legacy server by {2} application.", TraceContext.Get(), webServiceUri.ServerVersion, base.Application.GetType());
                return(new AutoDiscoverResult(base.Application.CreateExceptionForUnsupportedVersion(recipientData, webServiceUri.ServerVersion)));
            }
            AutoDiscoverQuery.AutoDiscoverTracer.TraceDebug <object, Uri, EmailAddress>((long)this.GetHashCode(), "{0}: Found availability service {1} that can fill request for mailbox {2}", TraceContext.Get(), webServiceUri.Uri, (recipientData != null) ? recipientData.EmailAddress : null);
            SerializedSecurityContext serializedSecurityContext = null;
            InternalClientContext     internalClientContext     = base.ClientContext as InternalClientContext;

            if (this.targetForestConfiguration.IsPerUserAuthorizationSupported && internalClientContext != null)
            {
                serializedSecurityContext = internalClientContext.SerializedSecurityContext;
            }
            ProxyAuthenticator proxyAuthenticatorForAutoDiscover = this.targetForestConfiguration.GetProxyAuthenticatorForAutoDiscover(webServiceUri.Uri, serializedSecurityContext, base.ClientContext.MessageId);

            return(new AutoDiscoverResult(webServiceUri, proxyAuthenticatorForAutoDiscover));
        }
        public static ProxyAuthenticator Create(CredentialCache cache, SerializedSecurityContext serializedContext, string messageId)
        {
            SoapHttpClientAuthenticator soapHttpClientAuthenticator;

            if (cache == null)
            {
                ProxyAuthenticator.SecurityTracer.TraceDebug(0L, "{0}: creating ProxyAuthenticator for network service", new object[]
                {
                    TraceContext.Get()
                });
                soapHttpClientAuthenticator = SoapHttpClientAuthenticator.CreateNetworkService();
            }
            else
            {
                ProxyAuthenticator.SecurityTracer.TraceDebug <object, CredentialCache>(0L, "{0}: creating ProxyAuthenticator for credential cache: {1}", TraceContext.Get(), cache);
                soapHttpClientAuthenticator = SoapHttpClientAuthenticator.Create(cache);
            }
            if (serializedContext != null)
            {
                soapHttpClientAuthenticator.AdditionalSoapHeaders.Add(serializedContext);
            }
            ProxyAuthenticator.SetMessageId(soapHttpClientAuthenticator, messageId);
            return(new ProxyAuthenticator(soapHttpClientAuthenticator, AuthenticatorType.NetworkCredentials));
        }