private void ExecuteAndRetry(string description, ManageDelegationClient.WebMethodDelegate webMethod)
        {
            DateTime t = DateTime.UtcNow + ManageDelegationClient.ErrorRetryLimit;
            string   validDirectUrl = this.ServiceEndpoint;

            this.Client.AllowAutoRedirect = false;
            WebProxy webProxy = LiveConfiguration.GetWebProxy(this.WriteVerbose);

            if (webProxy != null)
            {
                this.Client.Proxy = webProxy;
            }
            int num = 0;

            for (;;)
            {
                this.Client.Url = validDirectUrl;
                try
                {
                    this.WriteVerbose(Strings.CallingDomainServicesEndPoint(description, validDirectUrl));
                    webMethod();
                }
                catch (WebException ex)
                {
                    if (DateTime.UtcNow > t)
                    {
                        throw;
                    }
                    HttpWebResponse httpWebResponse = ex.Response as HttpWebResponse;
                    if (httpWebResponse == null)
                    {
                        throw;
                    }
                    HttpStatusCode statusCode = httpWebResponse.StatusCode;
                    if (statusCode != HttpStatusCode.Found)
                    {
                        if (statusCode != HttpStatusCode.Forbidden)
                        {
                            throw;
                        }
                        Thread.Sleep(ManageDelegationClient.ErrorRetryInterval);
                    }
                    else
                    {
                        num++;
                        if (num > 3)
                        {
                            throw;
                        }
                        validDirectUrl = this.GetValidDirectUrl(httpWebResponse);
                        if (validDirectUrl == null)
                        {
                            throw;
                        }
                    }
                    continue;
                }
                break;
            }
        }
Ejemplo n.º 2
0
        internal static Uri GetLiveIdFederationMetadataEpr(FederationTrust.NamespaceProvisionerType provisionerType)
        {
            switch (provisionerType)
            {
            case FederationTrust.NamespaceProvisionerType.LiveDomainServices:
                return(LiveConfiguration.GetEndpoint(ServiceEndpointId.LiveFederationMetadata));

            case FederationTrust.NamespaceProvisionerType.LiveDomainServices2:
                return(LiveConfiguration.GetEndpoint(ServiceEndpointId.MsoFederationMetadata));

            default:
                throw new ArgumentException("provisionerType");
            }
        }
Ejemplo n.º 3
0
 public ManageDelegation1Client(string certificate, WriteVerboseDelegate writeVerbose) : base(LiveConfiguration.GetDomainServicesEpr().ToString(), certificate, writeVerbose)
 {
     this.manageDelegation = new ManageDelegation("ManageDelegation", new RemoteCertificateValidationCallback(ManageDelegationClient.InvalidCertificateHandler));
     this.manageDelegation.ClientCertificates.Add(base.Certificate);
 }
Ejemplo n.º 4
0
 internal static Uri GetDomainServices2Epr()
 {
     return(LiveConfiguration.GetEndpoint(ServiceEndpointId.DomainPartnerManageDelegation2));
 }
Ejemplo n.º 5
0
        protected XPathDocument GetFederationMetadataXPathDocument(Uri partnerFederationMetadataEpr)
        {
            if (null == partnerFederationMetadataEpr)
            {
                throw new ArgumentNullException("PartnerFederationMetadataEpr");
            }
            this.WriteVerbose(Strings.RequestingFederationMetadataFromEndPoint(partnerFederationMetadataEpr.ToString()));
            Exception ex = null;
            string    s  = null;
            DateTime  t  = DateTime.UtcNow.Add(TimeSpan.FromMinutes(1.0));

            do
            {
                if (ex != null)
                {
                    this.WriteVerbose(Strings.FailedToRetrieveFederationMetadata(ex.ToString()));
                    Thread.Sleep(TimeSpan.FromSeconds(5.0));
                    ex = null;
                }
                using (PartnerFederationMetadata.TimeOutWebClient timeOutWebClient = new PartnerFederationMetadata.TimeOutWebClient(59000))
                {
                    timeOutWebClient.Credentials = CredentialCache.DefaultCredentials;
                    WebProxy webProxy = LiveConfiguration.GetWebProxy(this.WriteVerbose);
                    timeOutWebClient.Proxy = (webProxy ?? new WebProxy());
                    timeOutWebClient.Headers.Add(HttpRequestHeader.UserAgent, "MicrosoftExchangeFedTrustManagement");
                    try
                    {
                        s = timeOutWebClient.DownloadString(partnerFederationMetadataEpr);
                    }
                    catch (WebException ex2)
                    {
                        ex = ex2;
                    }
                    catch (IOException ex3)
                    {
                        ex = ex3;
                    }
                    catch (ProtocolViolationException ex4)
                    {
                        ex = ex4;
                    }
                }
            }while (ex != null && DateTime.UtcNow < t);
            if (ex != null)
            {
                throw new FederationMetadataException(Strings.ErrorAccessingFederationMetadata(ex.Message));
            }
            XPathDocument result = null;

            try
            {
                StringReader textReader = new StringReader(s);
                result = SafeXmlFactory.CreateXPathDocument(textReader);
            }
            catch (XmlException ex5)
            {
                throw new FederationMetadataException(Strings.ErrorInvalidFederationMetadata(ex5.Message));
            }
            catch (XPathException ex6)
            {
                throw new FederationMetadataException(Strings.ErrorInvalidFederationMetadata(ex6.Message));
            }
            return(result);
        }
Ejemplo n.º 6
0
 public ManageDelegation2Client(string domain, string signingDomain, string certificateThumbprint, WriteVerboseDelegate writeVerbose) : base(LiveConfiguration.GetDomainServices2Epr().ToString(), certificateThumbprint, writeVerbose)
 {
     this.manageDelegation = new ManageDelegation2("ManageDelegation2", new RemoteCertificateValidationCallback(ManageDelegationClient.InvalidCertificateHandler));
     this.manageDelegation.Authenticator = SoapHttpClientAuthenticator.Create(base.Certificate);
     this.manageDelegation.DomainOwnershipProofHeaderValue = new DomainOwnershipProofHeader
     {
         Domain        = domain,
         HashAlgorithm = "SHA-512",
         Signature     = Convert.ToBase64String(FederatedDomainProofAlgorithm.GetSignature(base.Certificate, signingDomain))
     };
 }