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)); }
public IActionResult DatosUsuario([FromQuery, SwaggerParameter(Description = "Usuario", Required = true)] string usuario) { var respuesta = _autService.DatosUsuario(usuario); return(ProcesarRespuesta(respuesta)); }