Esempio n. 1
0
        public async Task <ActionResult <RespuestaAutenticacion> > Login([FromBody] CredencialesUsuarios credenciales)
        {
            var resultado = await signInManager.PasswordSignInAsync(credenciales.Email, credenciales.Password, isPersistent : false, lockoutOnFailure : false);

            if (resultado.Succeeded)
            {
                return(await ConstruirToekn(credenciales));
            }
            else
            {
                return(BadRequest("Login Incorrecto"));
            }
        }
Esempio n. 2
0
        public async Task <Boolean> LoguearUsuario(CredencialesUsuarios credenciales)
        {
            var consulta = await _usuariosRepositorio.GetAllAsync();

            var usuario = consulta.Where(usr => usr.Usuario == credenciales.Usuario && usr.Contrasena == credenciales.Contrasena).FirstOrDefault();

            if (usuario != null)
            {
                return(true);
            }

            return(false);
        }
Esempio n. 3
0
        public async Task <IActionResult> Login(CredencialesUsuarios model)
        {
            /*
             * Aquí deberá ir la lógica de validación, en nuestro ASP.NET Identity
             * y luego de verificar que sea una autenticación correcta vamos a proceder a
             * generar el token
             */
            var response = await _usuariosNegocio.LoguearUsuario(model);

            // usuario válido
            if (response)
            {
                var user = new UsuarioModel
                {
                    Usuario    = model.Usuario,
                    Contrasena = model.Contrasena
                };

                /* Creamos la información que queremos transportar en el token,
                 * en nuestro los datos del usuario
                 */
                var claims = new[]
                {
                    new Claim("UserData", JsonConvert.SerializeObject(user))
                };

                // Generamos el Token
                var token = new JwtSecurityToken
                            (
                    issuer: _configuration["ApiAuth:Issuer"],
                    audience: _configuration["ApiAuth:Audience"],
                    claims: claims,
                    expires: DateTime.UtcNow.AddDays(60),
                    notBefore: DateTime.UtcNow,
                    signingCredentials: new SigningCredentials(new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_configuration["ApiAuth:SecretKey"])),
                                                               SecurityAlgorithms.HmacSha256)
                            );

                // Retornamos el token
                return(Ok(
                           new
                {
                    response = new JwtSecurityTokenHandler().WriteToken(token)
                }
                           ));
            }
            return(NotFound());
        }
Esempio n. 4
0
        public async Task <ActionResult <RespuestaAutenticacion> > Crear([FromBody] CredencialesUsuarios credenciales)
        {
            var usuario = new IdentityUser {
                UserName = credenciales.Email, Email = credenciales.Email
            };
            var resultado = await userManager.CreateAsync(usuario, credenciales.Password);

            if (resultado.Succeeded)
            {
                return(await ConstruirToekn(credenciales));
            }
            else
            {
                return(BadRequest(resultado.Errors));
            }
        }
        private async Task <RespuestaAutenticacion> ConstruirToken(CredencialesUsuarios credenciales)
        {
            //Conjunto de claims que colocaremos en el jwt
            var claims = new List <Claim>()
            {
                //El correo del usuario estara en el token
                new Claim("email", credenciales.Email),
            };

            //cargar los claims para que se incluyan en el jwt
            var usuario = await userManager.FindByNameAsync(credenciales.Email);

            //obtener los claims del usuario
            var claimsDB = await userManager.GetClaimsAsync(usuario);

            //agregamos los claims de la base de datos a nuestra lista de claims
            claims.AddRange(claimsDB);

            //Introducimos nuestra llave secreta de IConfiguration
            var llave = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(configuration["llavejwt"]));

            var creds = new SigningCredentials(llave, SecurityAlgorithms.HmacSha256);


            //Tiempo de expiracion del Token
            var expiracion = DateTime.UtcNow.AddYears(1);

            var token = new JwtSecurityToken(issuer: null, audience: null, claims: claims,
                                             expires: expiracion, signingCredentials: creds);

            return(new RespuestaAutenticacion()
            {
                //Pasamos el token creado
                Token = new JwtSecurityTokenHandler().WriteToken(token),
                Expiracion = expiracion
            });
        }
Esempio n. 6
0
        private async Task <RespuestaAutenticacion> ConstruirToekn(CredencialesUsuarios credenciales)
        {
            var claims = new List <Claim>()
            {
                new Claim("email", credenciales.Email)
            };
            var usuario = await userManager.FindByEmailAsync(credenciales.Email);

            var claimsDB = await userManager.GetClaimsAsync(usuario);

            claims.AddRange(claimsDB);

            var llave = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(configuration["llavejwt"]));
            var creds = new SigningCredentials(llave, SecurityAlgorithms.HmacSha256);

            var expiracion = DateTime.UtcNow.AddYears(1);
            var token      = new JwtSecurityToken(issuer: null, audience: null, claims: claims, expires: expiracion);

            return(new RespuestaAutenticacion()
            {
                Token = new JwtSecurityTokenHandler().WriteToken(token),
                Expiracion = expiracion
            });
        }