public static async Task <bool> iniciaSesionAsync() { var res = false; string plataforma = ConfigurationManager.AppSettings["Plataforma"].ToString(); string app = ConfigurationManager.AppSettings["App"].ToString(); string version = ConfigurationManager.AppSettings["Version"].ToString(); string idUbox = ConfigurationManager.AppSettings["IdUbox"].ToString(); string clave = ConfigurationManager.AppSettings["ClaveUbox"].ToString(); string macAddress = getMacAddress(); Console.WriteLine(macAddress); IniciarSesion peticion = new IniciarSesion(idUbox, clave, app, version, "", plataforma, macAddress); ClienteWebApi clienteWebApi = new ClienteWebApi(); var respuestaWebApi = await clienteWebApi.callWebApiSinAutorizacion("Autenticacion/LoginWindows", JsonConvert.SerializeObject(peticion)); if (respuestaWebApi != null) { if (respuestaWebApi.statusCode == 200) { ////Se guarda el JWt en Session y el RefreshToken en Cookie RespuestaAutenticacion modeloAprobado = respuestaWebApi.respuesta.Datos.ToObject <RespuestaAutenticacion>(); ////Ahorita guardariamos los datos en memoria JWT = modeloAprobado.jwtToken; RefreshToken = modeloAprobado.refreshToken; IdUser = respuestaWebApi.respuesta.IdRespuesta; res = true; } else if (respuestaWebApi.statusCode == 400) { ////Aqui se veria que mensaje poner en caso de que no se pueda hacer un login ///porque falte un dato MessageBox.Show(respuestaWebApi.message); } else { ////Aqui habria que ver igual que mensaje poner desde el web api ////Por que debio ocurrir un error en el web api MessageBox.Show(respuestaWebApi.message); } } else { MessageBox.Show("Por el momento el servicio esta fuera de linea, intentalo más tarde."); } return(res); }
/// <summary> /// Metodo para actualizar el token de acceso en caso de que se haya expirado /// </summary> /// <returns></returns> public async Task <bool> callWebApiRefreshToken() { var resultado = false; string refreshToken = Globals.RefreshToken; string user = Globals.IdUser.ToString(); string jwt = Globals.JWT; var peticion = new ActualizarToken(refreshToken, user, jwt); try { using (var cliente = new HttpClient()) { var res = new RespuestaApiObjeto(); ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12; cliente.Timeout = TimeSpan.FromSeconds(timeoutWebApi); var cts = new CancellationTokenSource(); var postBody = JsonConvert.SerializeObject(peticion); var uri = new Uri(string.Format("{0}{1}", url, "Autenticacion/RefreshToken")); var requestContent = new StringContent(postBody, Encoding.UTF8, "application/json"); var response = await cliente.PostAsync(uri, requestContent); var content = await response.Content.ReadAsStringAsync(); Debug.WriteLine(content); res = JsonConvert.DeserializeObject <RespuestaApiObjeto>(content); if (res.statusCode == 200) { ////Se guarda el JWt en Session y el RefreshToken en Cookie RespuestaAutenticacion modeloAprobado = res.respuesta.Datos.ToObject <RespuestaAutenticacion>(); Globals.JWT = modeloAprobado.jwtToken; Globals.RefreshToken = modeloAprobado.refreshToken; Globals.IdUser = res.respuesta.IdRespuesta; resultado = true; } } } catch (Exception ex) { Debug.WriteLine(ex.Message); } return(resultado); }
public RespuestaAutenticacion AutenticarUsuario() { RespuestaAutenticacion autenticacion = new RespuestaAutenticacion { TIP_OPER = Properties.Resources.CodErrorAutorizacion, STATUS = "Ingrese Usuario y Contraseña" }; if (SoapHeader == null) { return(autenticacion); } if (string.IsNullOrEmpty(SoapHeader.Usuario) || string.IsNullOrEmpty(SoapHeader.Password)) { return(autenticacion); } autenticacion.STATUS = "Credenciales Invalidas"; if (!SoapHeader.UsuarioCorrecto(SoapHeader.Usuario, SoapHeader.Password)) { return(autenticacion); } // Create and store the TokenAutenticacion before returning it. string token = Guid.NewGuid().ToString(); HttpRuntime.Cache.Add( token, SoapHeader.Usuario, null, DateTime.Now.AddMinutes(5),//tiempo de expiracion de Item en Cache TimeSpan.Zero, System.Web.Caching.CacheItemPriority.NotRemovable, null); autenticacion.STATUS = string.Empty; autenticacion.TOKEN = token; autenticacion.TIP_OPER = Properties.Resources.CodAutorizacionExitosa; return(autenticacion); }