Пример #1
0
        private static Task HandleExceptionAsync(HttpContext context, Exception exception, IList <Func <Exception, ResponseTokenError> > custom, string genericMessage, string uri = null)
        {
            context.Response.ContentType = "application/json";
            context.Response.StatusCode  = (int)HttpStatusCode.InternalServerError;
            string oauth2InternalExceptionMessage = GetUriException(exception);

            if (custom != null)
            {
                foreach (var item in custom)
                {
                    var response = item(exception);
                    if (response != null)
                    {
                        return(context.Response.WriteAsync(response.ToString()));
                    }
                }
            }

            if (!string.IsNullOrEmpty(genericMessage))
            {
                return(context.Response.WriteAsync(ResponseTokenError.ServerError(genericMessage, uri ?? GetUriException(exception)).ToString()));
            }

            return(context.Response.WriteAsync(ResponseTokenError.ServerError(exception, uri ?? oauth2InternalExceptionMessage).ToString()));
        }
Пример #2
0
        public IActionResult Index(RequestToken request)
        {
            try
            {
                if (Request?.ContentType == "application/json")
                {
                    using (StreamReader reader = new StreamReader(Request.Body, Encoding.UTF8))
                    {
                        request = JsonConvert.DeserializeObject <RequestToken>(reader.ReadToEnd());
                    }
                }
                if (string.IsNullOrEmpty(request.Grant_Type) || !grantTypes.Contains(request.Grant_Type))
                {
                    return(BadRequest(new ResponseTokenError("unsupported_grant_type", $"O grant_type '{request.Grant_Type ?? "null"}' não é suportado")));
                }

                switch (request.Grant_Type)
                {
                case GrantType.AuthorizationCode:

                    return(RedirectToAction("Index", "AuthorizationCode", request));

                case GrantType.ClientCredentials:

                    return(RedirectToAction("Index", "ClientCredentials", request));

                case GrantType.DeviceCode:

                    return(RedirectToAction("Index", "DeviceCode", request));

                case GrantType.Password:

                    return(RedirectToAction("Index", "Password", request));

                case GrantType.RefreshToken:

                    return(RedirectToAction("Index", "RefreshToken", request));

                default:
                    return(BadRequest(ResponseTokenError.UnsupportedGrantType(request.Grant_Type)));
                }
            }catch (Exception e)
            {
                _logger.LogError(e, "Request Error");
                return(StatusCode(500, ResponseTokenError.ServerError(e)));
            }
        }