protected bool TryValidateRequest(AuthorizeRequest request,
                                          out ValidatedRequest validatedRequest,
                                          out ActionResult failedResult)
        {
            validatedRequest = null;
            failedResult     = null;

            try
            {
                var validator = new AuthorizeRequestValidator(Clients);
                validatedRequest = validator.Validate(request);
                return(true);
            }
            catch (AuthorizeRequestValidationException ex)
            {
                failedResult = this.AuthorizeValidationError(ex);
                return(false);
            }
        }
        protected bool TryValidateRequest(AuthorizeRequest request, 
            out ValidatedRequest validatedRequest, 
            out ActionResult failedResult)
        {
            validatedRequest = null;
            failedResult = null;

            try
            {
                var validator = new AuthorizeRequestValidator(Clients);
                validatedRequest = validator.Validate(request);
                return true;
            }
            catch (AuthorizeRequestValidationException ex)
            {
                failedResult = this.AuthorizeValidationError(ex);
                return false;
            }
        }
        public ActionResult Index(AuthorizeRequest request)
        {
            Tracing.Start("OIDC Authorize Endpoint");

            ValidatedRequest validatedRequest;

            try
            {
                var validator = new AuthorizeRequestValidator(Clients);
                validatedRequest = validator.Validate(request);
            }
            catch (AuthorizeRequestValidationException ex)
            {
                Tracing.Error("Aborting OAuth2 authorization request");
                return this.AuthorizeValidationError(ex);
            }

            // consent - todo

            return PerformGrant(validatedRequest);
        }