public override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context)
        {
            //Aqui se hace la magia
            var form = await context.Request.ReadFormAsync();

            var user = new Models.User();

            if (string.Equals(form["tipo"], "lucas", StringComparison.OrdinalIgnoreCase))
            {
                user = null;
                user = _unit.Users.ValidateUser(context.UserName, context.Password);
            }
            else if (string.Equals(form["tipo"], "admin", StringComparison.OrdinalIgnoreCase))
            {
                bool validation = false;
                validation = _ad.Autenticado(context.UserName, context.Password);
                user       = null;
                if (validation)
                {
                    user = _unit.Users.validateUserAD(context.UserName, context.Password);
                }
            }
            else if (string.Equals(form["tipo"], "electro", StringComparison.OrdinalIgnoreCase))
            {
                bool validation = false;
                validation = _ad.Autenticado(context.UserName, context.Password);
                user       = null;
                if (validation)
                {
                    user = _unit.Users.validateUserElectro(context.UserName, context.Password);
                }
            }
            else
            {
                user = null;
            }

            if (user == null)
            {
                context.SetError("invalid_grant", "Usuario o password incorrecto");
                return;
            }

            var identity = new ClaimsIdentity(context.Options.AuthenticationType);

            identity.AddClaim(new Claim("sub", context.UserName));
            identity.AddClaim(new Claim("role", context.UserName));

            context.Validated(identity);
        }