AuthBridge.Clients.RelativeOpenIdClient.RequestAuthentication C# (CSharp) Метод

RequestAuthentication() публичный Метод

public RequestAuthentication ( System.Web.HttpContextBase context, Uri returnUrl ) : void
context System.Web.HttpContextBase
returnUrl System.Uri
Результат void
        public override void RequestAuthentication(HttpContextBase context, Uri returnUrl)
        {
            var request = Guid.NewGuid();
            var relyingPartyField = typeof(DotNetOpenAuth.AspNet.Clients.OpenIdClient).GetField("RelyingParty",
                BindingFlags.Static | BindingFlags.NonPublic);
            var providerIdentifierField = typeof(DotNetOpenAuth.AspNet.Clients.OpenIdClient).GetField(
                "providerIdentifier", BindingFlags.NonPublic | BindingFlags.Instance);
            var relyingParty = (OpenIdRelyingParty)relyingPartyField.GetValue(this);
            var realm = new Realm(_realmUri ?? new Uri(returnUrl.GetComponents(UriComponents.SchemeAndServer, UriFormat.Unescaped)));
            var userSuppliedIdentifier = new Uri((Identifier)providerIdentifierField.GetValue(this));
            var localhost = new Uri(ConfigurationManager.AppSettings["CustomEndpointHost"] ?? "http://localhost/");
            var userSuppliedIdentifierForRequestMachine = new Uri(localhost,
                new Uri(userSuppliedIdentifier.GetComponents(UriComponents.SchemeAndServer, UriFormat.Unescaped)).MakeRelativeUri(userSuppliedIdentifier));

            Logger.InfoFormat("Request {0}; userSuppliedIdentifier {1}; userSuppliedIdentifierForRequestMachine {2}", request, userSuppliedIdentifier, userSuppliedIdentifierForRequestMachine);
            IAuthenticationRequest authenticationRequest = relyingParty.CreateRequest(userSuppliedIdentifierForRequestMachine, realm, returnUrl);
            OnBeforeSendingAuthenticationRequest(authenticationRequest);

            try
            {
                var property = authenticationRequest.DiscoveryResult.GetType().GetProperty("ProviderEndpoint");
                var providerEndPointUri = (Uri)property.GetValue(authenticationRequest.DiscoveryResult, null);

                var providerEndPointUriRequestMachine = new Uri(new Uri(context.Request.Url.GetComponents(UriComponents.SchemeAndServer,UriFormat.Unescaped)),
                    new Uri(providerEndPointUri.GetComponents(UriComponents.SchemeAndServer, UriFormat.Unescaped)).MakeRelativeUri(providerEndPointUri));

                Logger.InfoFormat("Request {0}; userSupplied {1}", request, userSuppliedIdentifier);
                property.SetValue(authenticationRequest.DiscoveryResult, providerEndPointUriRequestMachine, BindingFlags.SetProperty, null, null, CultureInfo.CurrentCulture);

                authenticationRequest.RedirectToProvider();
            }
            catch (Exception ex)
            {
                Logger.Error("Error in discovery modification", ex);
                throw;
            }
        }