public override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context) { try { context.OwinContext.Response.Headers.Add("Access-Control-Allow-Origin", new[] { "*" }); DB_PersonSpecificationsEntities db = new DB_PersonSpecificationsEntities(); var user = db.Users.Where(d => d.UserName == context.UserName).FirstOrDefault(); if (user == null) { context.SetError("Error Message"); context.Rejected(); return; } var x = new Microsoft.AspNet.Identity.PasswordHasher().VerifyHashedPassword(user.Password, context.Password); if (x.ToString() != "Success") { context.SetError("Error Message"); context.Rejected(); return; } var identity = new ClaimsIdentity("JWT"); identity.AddClaim(new Claim(ClaimTypes.Name, user.UserName)); var ticket = new AuthenticationTicket(identity, null); context.Validated(ticket); } catch (Exception ex) { context.SetError("invalid_grant", "message"); } }