public IActionResult Index(RequestToken request)
        {
            ResponseToken token;

            if (string.IsNullOrEmpty(request.Client_Id))
            {
                return(BadRequest(ResponseTokenError.InvalidRequest("client_id")));
            }
            else if (string.IsNullOrEmpty(request.Client_Secret))
            {
                return(BadRequest(ResponseTokenError.InvalidRequest("client_secret")));
            }

            var clientCredentialsBase = _oAuth2ClientCredentialsBaseService.GetClientCredentialsBaseByClientId(request.Client_Id);

            if (clientCredentialsBase == null)
            {
                return(Unauthorized(ResponseTokenError.UnauthorizedClient("invalid client_id")));
            }
            else if (clientCredentialsBase.ClientSecret != request.Client_Secret)
            {
                return(Unauthorized(ResponseTokenError.UnauthorizedClient("invalid client_secret")));
            }

            token = TokenHelper.GenerateToken(clientCredentialsBase, _configuration["OAuth2Configuration:Key"], int.Parse(_configuration["OAuth2Configuration:Expires:ClientCredentials"]), _configuration["OAuth2Configuration:Issuer"], _configuration["OAuth2Configuration:Audience"]);

            return(Ok(token));
        }
Пример #2
0
        public IActionResult Index(RequestToken request)
        {
            ResponseToken token;

            if (string.IsNullOrEmpty(request.Username))
            {
                return(BadRequest(ResponseTokenError.InvalidRequest("username")));
            }
            else if (string.IsNullOrEmpty(request.Password))
            {
                return(BadRequest(ResponseTokenError.InvalidRequest("password")));
            }

            var passwordBase = _oAuth2PasswordBaseService.GetPasswordBaseByUsername(request.Username);

            if (passwordBase == null)
            {
                return(Unauthorized(ResponseTokenError.UnauthorizedClient("invalid username")));
            }
            else if (passwordBase.Password != SHA512Helper.Crip(request.Password))
            {
                return(Unauthorized(ResponseTokenError.UnauthorizedClient("invalid password")));
            }

            token = TokenHelper.GenerateToken(passwordBase, _configuration["OAuth2Configuration:Key"], int.Parse(_configuration["OAuth2Configuration:Expires:Password"]), _configuration["OAuth2Configuration:Issuer"], _configuration["OAuth2Configuration:Audience"]);
            return(Ok(token));
        }
Пример #3
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()));
        }
Пример #4
0
        public IActionResult Index(RequestToken request)
        {
            ResponseToken token = new ResponseToken();

            if (string.IsNullOrEmpty(request.Device_Code))
            {
                return(BadRequest(ResponseTokenError.InvalidRequest("device_code")));
            }
            return(Ok(token));
        }
Пример #5
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)));
            }
        }
Пример #6
0
        public IActionResult Index(RequestToken request)
        {
            if (string.IsNullOrEmpty(request.Code))
            {
                return(BadRequest(ResponseTokenError.InvalidRequest("code")));
            }
            else if (string.IsNullOrEmpty(request.Redirect_Uri))
            {
                return(BadRequest(ResponseTokenError.InvalidRequest("redirect_url")));
            }
            else if (string.IsNullOrEmpty(request.Client_Id))
            {
                return(BadRequest(ResponseTokenError.InvalidRequest("client_id")));
            }

            return(Ok());
        }
        public IActionResult Index(RequestToken request)
        {
            ResponseToken token;

            if (string.IsNullOrEmpty(request.Refresh_Token))
            {
                return(BadRequest(ResponseTokenError.InvalidRequest("refresh_token")));
            }

            var refreshTokenBase = _oAuth2RefreshTokenBaseService.GetRefreshTokenBaseByRefreshToken(request.Refresh_Token);

            if (refreshTokenBase == null)
            {
                return(Unauthorized(ResponseTokenError.UnauthorizedClient("invalid refresh_token")));
            }

            token = TokenHelper.GenerateToken(refreshTokenBase, _configuration["OAuth2Configuration:Key"], int.Parse(_configuration["OAuth2Configuration:Expires:RefreshToken"]), _configuration["OAuth2Configuration:Issuer"], _configuration["OAuth2Configuration:Audience"]);

            return(Ok(token));
        }