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); }