Пример #1
0
        public static HttpRequestData ToHttpRequestData(
            this HttpContext httpContext,
            IRequestStateStore requestStateStore)
        {
            var request = httpContext.Request;

            var uri = new Uri(
                request.Scheme
                + "://"
                + request.Host
                + request.Path
                + request.QueryString);

            var pathBase = httpContext.Request.PathBase.Value;

            pathBase = string.IsNullOrEmpty(pathBase) ? "/" : pathBase;
            IEnumerable <KeyValuePair <string, IEnumerable <string> > > formData = null;

            if (httpContext.Request.Method == "POST")
            {
                formData = request.Form.Select(
                    f => new KeyValuePair <string, IEnumerable <string> >(f.Key, f.Value));
            }

            return(new HttpRequestData(
                       httpContext.Request.Method,
                       uri,
                       pathBase,
                       formData,
                       requestStateStore,
                       httpContext.User));
        }
Пример #2
0
        private void Init(
            string httpMethod,
            Uri url,
            string applicationPath,
            IEnumerable <KeyValuePair <string, IEnumerable <string> > > formData,
            IRequestStateStore requestStateStore,
            ClaimsPrincipal user)
        {
            InitBasicFields(httpMethod, url, applicationPath, formData);
            User = user;

            var relayState = QueryString["RelayState"].SingleOrDefault();

            if (relayState == null)
            {
                Form.TryGetValue("RelayState", out relayState);
            }
            RelayState = relayState;

            if (relayState != null)
            {
                var cookieName = StoredRequestState.CookieNameBase + relayState;

                StoredRequestState = requestStateStore.GetState(cookieName);
            }
        }
Пример #3
0
 /// <summary>
 /// Ctor
 /// </summary>
 /// <param name="optionsCache">Options</param>
 /// <param name="optionsFactory">Factory for options</param>
 /// <param name="requestStateStore">Storage for request state</param>
 public Saml2Handler(
     IOptionsMonitorCache <Saml2Options> optionsCache,
     IOptionsFactory <Saml2Options> optionsFactory,
     IRequestStateStore requestStateStore)
 {
     this.optionsFactory    = optionsFactory;
     this.requestStateStore = requestStateStore;
     this.optionsCache      = optionsCache;
 }
Пример #4
0
 public HttpRequestData(
     string httpMethod,
     Uri url,
     string applicationPath,
     IEnumerable <KeyValuePair <string, IEnumerable <string> > > formData,
     IRequestStateStore requestStateStore,
     ClaimsPrincipal user)
 {
     Init(httpMethod, url, applicationPath, formData, requestStateStore, user);
 }
Пример #5
0
 public HttpRequestData(
     string httpMethod,
     Uri url,
     string applicationPath,
     IEnumerable <KeyValuePair <string, IEnumerable <string> > > formData,
     IRequestStateStore requestStateStore)
     : this(httpMethod, url, applicationPath, formData, requestStateStore, user : null)
 {
     // empty
 }
Пример #6
0
        public static async Task Apply(
            this CommandResult commandResult,
            HttpContext httpContext,
            IRequestStateStore requestStateStore,
            string signInScheme,
            string signOutScheme)
        {
            httpContext.Response.StatusCode = (int)commandResult.HttpStatusCode;

            if (commandResult.Location != null)
            {
                httpContext.Response.Headers["Location"] = commandResult.Location.OriginalString;
            }

            if (!string.IsNullOrEmpty(commandResult.SetCookieName))
            {
                requestStateStore?.SetState(commandResult.SetCookieName, commandResult.RequestState);
            }

            foreach (var h in commandResult.Headers)
            {
                httpContext.Response.Headers.Add(h.Key, h.Value);
            }

            if (!string.IsNullOrEmpty(commandResult.ClearCookieName))
            {
                httpContext.Response.Cookies.Delete(commandResult.ClearCookieName);
            }

            if (!string.IsNullOrEmpty(commandResult.Content))
            {
                var buffer = Encoding.UTF8.GetBytes(commandResult.Content);
                httpContext.Response.ContentType = commandResult.ContentType;
                await httpContext.Response.Body.WriteAsync(buffer, 0, buffer.Length);
            }

            if (commandResult.Principal != null)
            {
                var authProps = new AuthenticationProperties(commandResult.RelayData)
                {
                    RedirectUri = commandResult.Location.OriginalString
                };
                await httpContext.SignInAsync(signInScheme, commandResult.Principal, authProps);
            }

            if (commandResult.TerminateLocalSession)
            {
                await httpContext.SignOutAsync(signOutScheme ?? signInScheme);
            }
        }
Пример #7
0
        protected OAuthRequest(
            EndPoint resourceEndPoint,
            OAuthService settings,
            string verifier,
            IRequestStateStore stateStore,
            RequestStateKey stateKey)
        {
            this.ResourceEndPoint     = resourceEndPoint;
            this.Service              = settings;
            this.RequestTokenVerifier = verifier;

            this.stateStore = stateStore;
            this.state      = stateStore.Get(stateKey);
        }
Пример #8
0
        protected OAuthRequest(
            EndPoint resourceEndPoint,
            OAuthService settings,
            string verifier,
            IRequestStateStore stateStore,
            RequestStateKey stateKey)
        {
            this.ResourceEndPoint = resourceEndPoint;
            this.Service = settings;
            this.RequestTokenVerifier = verifier;

            this.stateStore = stateStore;
            this.state = stateStore.Get(stateKey);
        }