Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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));
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
        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);
            }
        }