public IActionResult RequestToken([FromBody] UsuarioView request) { if (request == null || string.IsNullOrEmpty(request.Login) || (request.Senha.Length == 0)) { //return BadRequest(new { message = "Usuário ou senha incorreta" }); return(Unauthorized()); } else { var usuario = usuarioService.Autentica(request.Login, request.Senha.ToString()); if (usuario != null) { var claims = new[] { new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString("N")), new Claim(JwtRegisteredClaimNames.UniqueName, usuario.Id.ToString()), new Claim(ClaimTypes.Name, usuario.Id.ToString()), new Claim(ClaimTypes.Email, usuario.TbUsuarioConta.Email) }; //recebe uma instancia da classe SymmetricSecurityKey //armazenando a chave de criptografia usada na criação do token var key = new SymmetricSecurityKey( Encoding.UTF8.GetBytes(_configuration["SecurityKey"])); //recebe um objeto do tipo SigninCredentials contendo a chave de //criptografia e o algoritimo de segurança empregados na geração //de assinaturas digitais para tokens var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha256); var token = new JwtSecurityToken( issuer: "wkuroki.net", audience: "wkuroki.net", claims: claims, expires: DateTime.Now.AddHours(12), signingCredentials: creds); /* * var token = new JwtSecurityTokenHandler().WriteToken(tokeOptions); * return Ok(new { Token = token }); */ return(Ok(new { token = new JwtSecurityTokenHandler().WriteToken(token) })); } else { return(Unauthorized()); //return BadRequest("Credenciais inválidas!!!"); } } }
public override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context) { var header = context.OwinContext.Response.Headers.SingleOrDefault(h => h.Key == "Access-Control-Allow-Origin"); if (header.Equals(default(KeyValuePair <string, string[]>))) { context.OwinContext.Response.Headers.Add("Access-Control-Allow-Origin", new[] { "*" }); } UsuarioService.AdicionaUsuarioMaster(); var user = UsuarioService.Autentica(context.Password, context.UserName); if (user == null) { #region Log LogService.CriaLogMongo(new LogModel { Classe = "SimpleAuthorizationServerProvider", Controller = "", Data = DateTime.Now, Linha = 29, Mensagem = "Usuário não encontrado: " + context.UserName, Metodo = "GrantResourceOwnerCredentials", Tipo = Tipo.Erro, QtdeRegistrosRetornados = 0 }); #endregion context.SetError("invalid_grant", "The user name or password is incorrect."); return; } var identity = new ClaimsIdentity(context.Options.AuthenticationType); identity.AddClaim(new Claim("sub", context.UserName)); identity.AddClaim(new Claim("role", "user")); context.Validated(identity); #region Log LogService.CriaLogMongo(new LogModel { Classe = "SimpleAuthorizationServerProvider", Controller = "", Data = DateTime.Now, Linha = 29, Mensagem = "Usuário Autorizado: " + context.UserName + " AuthenticantionType: " + identity.AuthenticationType + " IsAuthenticated: " + identity.IsAuthenticated, Metodo = "GrantResourceOwnerCredentials", Tipo = Tipo.Info, QtdeRegistrosRetornados = 1 }); #endregion }