public override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context)
        {
            context.OwinContext.Response.Headers.Add("Access-Control-Allow-Origin", new[] { "*" });

            var usuario = _usuarioApp.Autenticar(context.UserName, context.Password);

            if (usuario == null)
            {
                context.SetError("invalid_grant", "Usuário ou senha inválidos");
                return;
            }

            if (!usuario.EstaAtivo)
            {
                context.SetError("invalid_grant", "Usuário está inativo.");
                return;
            }

            var identity = new ClaimsIdentity("JWT");

            identity.AddClaims(ExtendedClaimsProvider.GetClaims(usuario));
            identity.AddClaims(RolesFromClaims.CreateRolesBasedOnClaims(identity));

            AuthenticationProperties properties = CreateProperties(usuario.IdPessoa.ToString(), usuario.Funcionario.Imagem, usuario.Funcionario.Estabelecimento.Logo);
            AuthenticationTicket     ticket     = new AuthenticationTicket(identity, properties);

            context.Validated(ticket);
        }