Ejemplo n.º 1
0
        public static string GenerarAccessToken(string usuario, IAutService autService, IGenService genService)
        {
            var respDatosUsuario = autService.DatosUsuario(usuario);

            if (!respDatosUsuario.Codigo.Equals(RiskConstants.CODIGO_OK))
            {
                return(string.Empty);
            }

            Usuario datosUsuario = respDatosUsuario.Datos;

            // Crea la lista de claims (pertenencias, características) del usuario
            List <Claim> claims = new List <Claim>();

            claims.Add(new Claim(ClaimTypes.Name, datosUsuario.Alias));
            claims.Add(new Claim(ClaimTypes.GivenName, datosUsuario.Nombre ?? ""));
            claims.Add(new Claim(ClaimTypes.Surname, datosUsuario.Apellido ?? ""));
            claims.Add(new Claim(ClaimTypes.Email, datosUsuario.DireccionCorreo ?? ""));
            //claimsList.Add(new Claim(ClaimTypes.HomePhone, usuario.NumeroTelefono ?? ""));
            claims.Add(new Claim(ClaimTypes.GroupSid, datosUsuario.Origen.ToString() ?? ""));

            // Agrega los roles del usuario a la lista de claims
            foreach (var rol in datosUsuario.Roles)
            {
                claims.Add(new Claim(ClaimTypes.Role, rol.Nombre));
            }

            var respTiempoExpiracionToken = autService.TiempoExpiracionToken(TipoToken.AccessToken);

            if (!respTiempoExpiracionToken.Codigo.Equals(RiskConstants.CODIGO_OK))
            {
                return(string.Empty);
            }
            int tiempoExpiracion = int.Parse(respTiempoExpiracionToken.Datos.Contenido);

            var respValorParametro = genService.ValorParametro("CLAVE_VALIDACION_ACCESS_TOKEN");

            if (!respValorParametro.Codigo.Equals(RiskConstants.CODIGO_OK))
            {
                return(string.Empty);
            }
            var signingKey = Encoding.ASCII.GetBytes(respValorParametro.Datos.Contenido);

            var tokenDescriptor = new SecurityTokenDescriptor
            {
                Subject            = new ClaimsIdentity(claims.ToArray()),
                Expires            = DateTime.UtcNow.AddSeconds(tiempoExpiracion),
                SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(signingKey), SecurityAlgorithms.HmacSha256Signature)
            };

            var tokenHandler = new JwtSecurityTokenHandler();
            var createdToken = tokenHandler.CreateToken(tokenDescriptor);

            return(tokenHandler.WriteToken(createdToken));
        }
Ejemplo n.º 2
0
        public IActionResult DatosUsuario([FromQuery, SwaggerParameter(Description = "Usuario", Required = true)] string usuario)
        {
            var respuesta = _autService.DatosUsuario(usuario);

            return(ProcesarRespuesta(respuesta));
        }