public override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context) { var roles = new List <string>(); _roles = new Dictionary <string, string>(); context.OwinContext.Response.Headers.Remove("Cache-Control"); context.OwinContext.Response.Headers.Add("Access-Control-Allow-Origin", new[] { "*" }); var identity = new ClaimsIdentity(context.Options.AuthenticationType); try { _usuario = await _usuarioAppService.Authenticantion(context.UserName, context.Password); if (_usuario == null) { throw new Exception(Errors.UserNotFound); } identity.AddClaim(new Claim(ClaimTypes.Role, _usuario.UsuarioPerfil.NomeUsuarioPerfil, _usuario.UsuarioPerfil.UsuarioPerfilId.ToString(""))); roles.Add(_usuario.UsuarioPerfil.NomeUsuarioPerfil); _roles.Add(_usuario.UsuarioPerfil.NomeUsuarioPerfil, _usuario.UsuarioPerfil.UsuarioPerfilId.ToString("")); identity.AddClaim(new Claim(ClaimTypes.Name, context.UserName)); var principal = new GenericPrincipal(identity, roles.ToArray()); Thread.CurrentPrincipal = principal; await Task.FromResult(context.Validated(identity)); } catch (Exception ex) { context.SetError("invalid_grant", ex.Message); } }