async Task <IEndpointResult> ProcessAuthorizeAsync(IdentityServerContext context)
        {
            _logger.LogInformation("Start Authorize Request");

            var values = context.HttpContext.Request.Query.AsNameValueCollection();
            var user   = await _context.GetIdentityServerUserAsync();

            var result = await ProcessAuthorizeRequestAsync(values, user, null);

            _logger.LogInformation("End Authorize Request. Result type: {0}", result?.GetType().ToString() ?? "-none-");

            return(result);
        }
예제 #2
0
        private async Task <IEndpointResult> ProcessSignoutAsync(IdentityServerContext context)
        {
            _logger.LogInformation("Processing singout request");

            NameValueCollection parameters = null;

            if (context.HttpContext.Request.Method == "GET")
            {
                parameters = context.HttpContext.Request.Query.AsNameValueCollection();
            }
            else if (context.HttpContext.Request.Method == "POST")
            {
                parameters = context.HttpContext.Request.Form.AsNameValueCollection();
            }
            else
            {
                _logger.LogWarning("Invalid HTTP method for end session endpoint.");
                return(new StatusCodeResult(HttpStatusCode.MethodNotAllowed));
            }

            var user = await _context.GetIdentityServerUserAsync();

            var result = await _endSessionRequestValidator.ValidateAsync(parameters, user);

            return(await CreateLogoutPageRedirectAsync(result));
        }
예제 #3
0
        async Task <AuthorizationRequest> GetAuthorizeRequest(string paramName, string paramValue)
        {
            if (paramValue == null)
            {
                paramValue = _context.HttpContext.Request.Query[paramName].FirstOrDefault();
            }

            if (paramValue != null && IsValidReturnUrl(paramValue))
            {
                var parameters = paramValue.ReadQueryStringAsNameValueCollection();
                var user       = await _context.GetIdentityServerUserAsync();

                var result = await _validator.ValidateAsync(parameters, user);

                if (!result.IsError)
                {
                    return(new AuthorizationRequest(result.ValidatedRequest));
                }
            }

            return(null);
        }