public AuthRetorno ValidaLoginUsuario(LoginRequisitor requisitor) { AuthRetorno retorno = new AuthRetorno(); AutenticacaoResponse response = repository.ValidaLoginUsuario(requisitor); retorno.authenticated = response.Autenticado; if (response.Autenticado) { ClaimsIdentity identity = new ClaimsIdentity( new GenericIdentity(requisitor.usuario, "Login"), new[] { new Claim("CookieContainer", JsonConvert.SerializeObject(response.CookieContainer), ClaimValueTypes.String, "") } ); retorno.Claims = identity; retorno.message = "OK"; } else { retorno.message = "Usuário e/ou senha não encontrados."; } return(retorno); }
public async Task <IActionResult> Login(LoginViewModel model, string returnUrl = null) { ViewData["ReturnUrl"] = returnUrl; if (ModelState.IsValid) { //var tmp = User.Identity.IsAuthenticated; // Chamar a API try { AutenticacaoResponse resposta = await Autenticar(model); if (resposta.Sucesso) { // Registrar o Cookie IList <Claim> claims = new List <Claim> { new Claim("Login", model.Login), new Claim("Token", resposta.Token), }; foreach (string perfil in resposta.Perfis) { claims.Add(new Claim(ClaimTypes.Role, perfil)); } ClaimsIdentity claimsIdentity = new ClaimsIdentity(claims, CookieAuthenticationDefaults.AuthenticationScheme); AuthenticationProperties authProperties = new AuthenticationProperties { AllowRefresh = true, ExpiresUtc = DateTimeOffset.UtcNow.AddDays(1), IsPersistent = true, RedirectUri = "/itens/pesquisar" }; await HttpContext.SignInAsync(CookieAuthenticationDefaults.AuthenticationScheme, new ClaimsPrincipal(claimsIdentity), authProperties); if (string.IsNullOrWhiteSpace(returnUrl)) { return(RedirectToAction("Pesquisar", "Itens")); } return(RedirectToPage(returnUrl)); } else { ModelState.AddModelError(string.Empty, resposta.Mensagem); return(View(model)); } } catch (Exception ex) { return(View("Error", new ErrorViewModel() { Details = $"Erro: 500 - Internal Server Error => {ex.Message} - {ex.StackTrace}" })); } } return(View(model)); }
public AutenticacaoResponse ValidaLoginUsuario(LoginRequisitor requisitor) { AutenticacaoResponse retorno = new AutenticacaoResponse(); HttpWebRequest _requisitor = null; String result = Post(Parametros.ExtremidadeDeAutenticacao, requisitor.ToSerializeBytes(), out _requisitor); if (result.Contains("timesheetColaborador")) { retorno.Autenticado = true; retorno.CookieContainer = GetAllCookies(_requisitor.CookieContainer); } return(retorno); }
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); } }