public override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context) { try { IServiceUser serviceUser = _container.Resolve <IServiceUser>(); AuthUserRequest request = new AuthUserRequest(); request.Email = context.UserName; request.Password = context.Password; AuthUserResponse response = serviceUser.AuthUser(request); if (serviceUser.IsInvalid()) { if (response == null) { context.SetError("invalid_grant", Message.X0_IsInvalid.ToFormat(Message.Email + Message.Or + Message.Password)); return; } } serviceUser.ClearNotifications(); if (response == null) { context.SetError("invalid_grant", Message.DataNotFound); return; } var identity = new ClaimsIdentity(context.Options.AuthenticationType); //Definindo as Claims identity.AddClaim(new Claim("GTUser", JsonConvert.SerializeObject(response))); var principal = new GenericPrincipal(identity, new string[] { }); Thread.CurrentPrincipal = principal; context.Validated(identity); } catch (Exception ex) { context.SetError("invalid_grant", ex.Message); return; } }