public IActionResult Login( [FromBody] AutenticacaoRequest autenticacaoRequest, [FromServices] IAutenticacaoServico autenticacaoServico, [FromServices] ConfigsAssinatura configsAssinatura, [FromServices] ConfigsToken configsToken) { bool credenciaisValidas = autenticacaoServico.Autenticar(autenticacaoRequest); if (credenciaisValidas) { ClaimsIdentity identity = new ClaimsIdentity( new GenericIdentity(autenticacaoRequest.Login, "Login"), new[] { new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString("N")), new Claim(JwtRegisteredClaimNames.UniqueName, autenticacaoRequest.Login) } ); DateTime dataCriacao = DateTime.Now; DateTime dataExpiracao = dataCriacao + TimeSpan.FromSeconds(configsToken.Seconds); var handler = new JwtSecurityTokenHandler(); var securityToken = handler.CreateToken(new SecurityTokenDescriptor { Issuer = configsToken.Issuer, Audience = configsToken.Audience, SigningCredentials = configsAssinatura.SigningCredentials, Subject = identity, NotBefore = dataCriacao, Expires = dataExpiracao }); var token = handler.WriteToken(securityToken); return(Ok(new AutenticacaoResponse { CriadoEm = dataCriacao, ExpiradoEm = dataExpiracao, Token = token })); } else { return(Ok(new Falha { Titulo = "", Erros = "Falha ao autenticar" })); } }
public async Task <AutenticacaoResponse> Autenticar(AutenticacaoRequest request) { var usuario = await _context.Usuario.FirstOrDefaultAsync(x => x.Email == request.Email && x.Senha == request.Senha); if (usuario == null) { _notification.AddNotification("Usuário", "Usuário não foi encontrado"); return(null); } var token = _jwtConfig.GerarToken(usuario); return(new AutenticacaoResponse { Id = usuario.Id, Email = usuario.Email, Nome = usuario.Nome, Token = token }); }
public IActionResult Autenticar([FromBody] AutenticacaoRequest request) { string token = null; DateTime? validade; int statusCode = StatusCodes.Status403Forbidden; IList <string> perfis = new List <string>(); bool autenticado = _appService.Autenticar(request.Nome, request.Senha, out string mensagem, out UsuarioDto usuarioDto); if (autenticado) { statusCode = StatusCodes.Status200OK; token = GeraToken(usuarioDto, perfis, out validade); } else { validade = null; } return(StatusCode(statusCode, new AutenticacaoResponse(autenticado, mensagem, token, validade, perfis, usuarioDto))); }
private async Task <AutenticacaoResponse> Autenticar(LoginViewModel model) { using (var client = new HttpClient()) { client.BaseAddress = new Uri(url); /* * Requisição * { * "nome": "admin", * "senha": "202cb962ac59075b964b07152d234b70", * } * * Resposta * { * "sucesso" = "true", * "mensagem" = "mensagem do resultado da operação", * "token" = "hash informado se sucesso, caso contrário será nulo", * "dataValidade = "data de validade do token quando sucesso, em caso de falha será informado nulo" * } */ AutenticacaoRequest request = new AutenticacaoRequest() { Nome = model.Login, Senha = MD5.ByteArrayToString(MD5.HashMD5(model.Senha)) }; HttpResponseMessage result = await client.PostAsJsonAsync("/api/v1/usuario/autenticar", request); string conteudo = result.Content.ReadAsStringAsync().Result; AutenticacaoResponse response = JsonConvert.DeserializeObject <AutenticacaoResponse>(conteudo); return(response); } }
public bool Autenticar(AutenticacaoRequest autenticacaoRequest) { Usuario usuario = _usuarioServico.ObterPorLoginOuEmail(autenticacaoRequest.Login); return(usuario.Senha.Equals(Criptografia.Criptografar(autenticacaoRequest.Senha))); }