Example #1
0
        private async Task <IEndpointResult> ProcessSignInAsync(HttpContext context, SignInRequestMessage signin)
        {
            if (context.User.Identity.IsAuthenticated)
            {
                logger.LogDebug("User in WS-Federation signin request: {subjectId}", context.User.GetSubjectId());
            }
            else
            {
                logger.LogDebug("No user present in WS-Federation signin request");
            }

            // validate request
            var result = await signinValidator.ValidateAsync(signin, context.User);

            if (result.IsError)
            {
                throw new Exception(result.Error);
            }

            if (result.SignInRequired)
            {
                var wsFedRequest = context.Request.QueryString.Value;
                return(new WsFederationLoginPageResult(wsFedRequest));
            }

            // create protocol response
            var responseMessage = await generator.GenerateResponseAsync(result);

            await sessionService.AddClientIdAsync(result.Client.ClientId);

            return(new SignInResult(responseMessage));
        }
Example #2
0
        //Process the response by returning a self-submitting form
        private async Task ProcessResponseAsync(HttpContext context)
        {
            await _userSession.AddClientIdAsync(Response.Request.Client.ClientId);

            var formPost = Response.ResponseMessage.BuildFormPost();

            context.Response.ContentType = "text/html";
            await context.Response.WriteHtmlAsync(formPost);
        }
        protected async Task ProcessResponseAsync(HttpContext context)
        {
            if (!Response.IsError)
            {
                // success response -- track client authorization for sign-out
                //_logger.LogDebug("Adding client {0} to client list cookie for subject {1}", request.ClientId, request.Subject.GetSubjectId());
                await _userSession.AddClientIdAsync(Response.Request.ClientId);
            }

            await RenderAuthorizeResponseAsync(context);
        }
Example #4
0
        private async Task <IActionResult> ProcessSignInAsync(WsFederationMessage signin, ClaimsPrincipal user)
        {
            if (user != null && user.Identity.IsAuthenticated)
            {
                _logger.LogDebug("User in WS-Federation signin request: {subjectId}", user.GetSubjectId());
            }
            else
            {
                _logger.LogDebug("No user present in WS-Federation signin request");
            }

            // validate request
            var result = await _signinValidator.ValidateAsync(signin, user);

            if (result.IsError)
            {
                throw new Exception(result.Error);
            }

            if (result.SignInRequired)
            {
                var returnUrl = Url.Action("Index");
                // remove wfresh parameter to ensure we don't trigger sign in after the user signes in
                var query = Request.Query.Where(q => !q.Key.Equals("wfresh", StringComparison.OrdinalIgnoreCase));
                returnUrl = returnUrl.AddQueryString(QueryString.Create(query).Value);

                var loginUrl = Request.PathBase + _options.UserInteraction.LoginUrl;
                var url      = loginUrl.AddQueryString(_options.UserInteraction.LoginReturnUrlParameter, returnUrl);

                return(Redirect(url));
            }
            else
            {
                // create protocol response
                var responseMessage = await _generator.GenerateResponseAsync(result);

                await _userSession.AddClientIdAsync(result.Client.ClientId);

                return(new SignInResult(responseMessage));
            }
        }
Example #5
0
        private async Task <IActionResult> ProcessSignInAsync(WsFederationMessage signin, ClaimsPrincipal user, HttpRequest request, IUrlHelper helper)
        {
            if (user != null && user.Identity.IsAuthenticated)
            {
                _logger.LogDebug("User in WS-Federation signin request: {subjectId}", user.GetSubjectId());
            }
            else
            {
                _logger.LogDebug("No user present in WS-Federation signin request");
            }

            // validate request
            var result = await _signinValidator.ValidateAsync(signin, user).ConfigureAwait(false);

            if (result.IsError)
            {
                return(new BadRequestObjectResult(result));
            }

            if (result.SignInRequired)
            {
                var returnUrl = helper.Action(nameof(WsFederationController.Index));
                returnUrl = AddQueryString(returnUrl, request.QueryString.Value);

                var loginUrl = request.PathBase + _options.UserInteraction.LoginUrl;
                var url      = AddQueryString(loginUrl, _options.UserInteraction.LoginReturnUrlParameter, returnUrl);

                return(new RedirectResult(url));
            }
            else
            {
                // create protocol response
                var responseMessage = await _generator.GenerateResponseAsync(result).ConfigureAwait(false);

                await _userSession.AddClientIdAsync(result.Client.ClientId).ConfigureAwait(false);

                return(new SignInResult(responseMessage));
            }
        }
        private async Task <IActionResult> ProcessSignInAsync(SignInRequestMessage signin, ClaimsPrincipal user)
        {
            if (user.Identity.IsAuthenticated)
            {
                _logger.LogDebug("User in WS-Federation signin request: {subjectId}", user.GetSubjectId());
            }
            else
            {
                _logger.LogDebug("No user present in WS-Federation signin request");
            }

            // validate request
            var result = await _signinValidator.ValidateAsync(signin, user);

            if (result.IsError)
            {
                throw new Exception(result.Error);
            }

            if (result.SignInRequired)
            {
                var returnUrl = Url.Action("Index");
                returnUrl = returnUrl.AddQueryString(Request.QueryString.Value);

                var loginUrl = _options.UserInteraction.LoginUrl;
                var url      = loginUrl.AddQueryString(_options.UserInteraction.LoginReturnUrlParameter, returnUrl);

                return(Redirect(url));
            }
            else
            {
                // create protocol response
                var responseMessage = await _generator.GenerateResponseAsync(result);

                await _sessionService.AddClientIdAsync(result.Client.ClientId);

                return(new SignInResult(responseMessage));
            }
        }
Example #7
0
 public Task AddClientIdAsync(string clientId)
 {
     return(_inner.AddClientIdAsync(clientId));
 }