public ReponseApi GetCodeGoogle(DataGoogle par) { ReponseApi res = new ReponseApi(); res.Codigo = 0; res.Mensaje = ""; res.Respuesta = null; try { if (string.IsNullOrEmpty(par.Emisor)) { res.Mensaje = "El Emisor no puede ser nulo"; } else if (string.IsNullOrEmpty(par.Cuenta)) { res.Mensaje = "La Cuenta no puede ser nula"; } else { //res = DobleFactor.ObtenerCodigoConfig(par.Emisor, par.Cuenta); } } catch (Exception ex) { //Log Error _logger.Log(LogLevel.Error, ex, ex.Message); } return(res); }
public ReponseApi desencriptaTexto(ActiveResponse par) { ReponseApi res = new ReponseApi(); res.Codigo = 0; res.Mensaje = ""; res.Respuesta = null; try { res.Codigo = 0; res.Mensaje = ""; res.Respuesta = Encriptacion.DesencriptaResponse(par, par.Llave); } catch (Exception ex) { string pars = JsonSerializer.Serialize(par); try { EjecucionSP.LogErrores("AccessADController", "validaCodigo", pars, ex.Message); } catch (Exception exc) { _logger.Log(LogLevel.Error, exc, exc.Message); } } return(res); }
public static ReponseApi ReconfiguraToken(string app, string usuario, string email) { ReponseApi res = new ReponseApi(); try { TwoFactorAuthenticator autenticador = new TwoFactorAuthenticator(); ResponseQRGoogle resGoogle = new ResponseQRGoogle(); var key = TwoStepsAuthenticator.Authenticator.GenerateKey(); var setupInfo = autenticador.GenerateSetupCode(app, email, key, false, 4); var codigoRecuperacion = TwoStepsAuthenticator.CounterAuthenticator.GenerateKey(); resGoogle.QRImagen = setupInfo.QrCodeSetupImageUrl; resGoogle.LlaveSecreta = key; resGoogle.CodigoManual = setupInfo.ManualEntryKey; string idUsuario; idUsuario = EjecucionSP.ActualizaToken(usuario, app, key, setupInfo.ManualEntryKey, codigoRecuperacion); string cuerpoCorreo = "<h1>Código de Recuperación</h1><br>" + codigoRecuperacion; Correo.EnviarMensaje("*****@*****.**", "Configuración de Doble Factor para " + app, cuerpoCorreo); res.Codigo = 1; res.Mensaje = idUsuario; res.Respuesta = resGoogle; } catch (Exception ex) { res.Codigo = 0; res.Mensaje = ex.Message; } return(res); }
public ReponseApi GetCodeMicrosoft(DataMicrosoft par) { ReponseApi res = new ReponseApi(); QRFeatures funciones = new QRFeatures(); QRCodeGenerator qrGenerator = new QRCodeGenerator(); res.Codigo = 0; res.Mensaje = ""; res.Respuesta = null; try { if (string.IsNullOrEmpty(par.Emisor)) { res.Mensaje = "El Emisor no puede ser nulo"; } else if (string.IsNullOrEmpty(par.Cuenta)) { res.Mensaje = "La Cuenta no puede ser nula"; } else { ResponseQRMicrosoft resMicrosoft = new ResponseQRMicrosoft(); var key = TwoStepsAuthenticator.Authenticator.GenerateKey(); byte[] inputBytes = Encoding.ASCII.GetBytes(key); string base32 = Wiry.Base32.Base32Encoding.Standard.GetString(inputBytes); string codigoManual = base32.Replace("=", null); var AuthenticatorUri = funciones.GenerateQrCodeUri(par.Cuenta, par.Emisor, key); QRCodeData qrCodeData = qrGenerator.CreateQrCode(AuthenticatorUri, QRCodeGenerator.ECCLevel.Q); QRCode qrCode = new QRCode(qrCodeData); Bitmap qrCodeImage = qrCode.GetGraphic(4); System.IO.MemoryStream ms = new MemoryStream(); qrCodeImage.Save(ms, ImageFormat.Png); byte[] byteImage = ms.ToArray(); var SigBase64 = Convert.ToBase64String(byteImage); resMicrosoft.LlaveSecreta = key; resMicrosoft.CodigoManual = codigoManual; resMicrosoft.QRImagen = "data:image/png;base64," + SigBase64; res.Codigo = 1; res.Respuesta = resMicrosoft; } } catch (Exception ex) { //Log Error _logger.Log(LogLevel.Error, ex, ex.Message); } return(res); }
protected ActionResult ResultatApi(ReponseApi reponseApi) { return(reponseApi.ReponseApiCodeStatut_ switch { 200 => Ok(reponseApi), 201 => Ok(reponseApi), 400 => BadRequest(reponseApi), 401 => Unauthorized(reponseApi), 404 => NotFound(reponseApi), _ => null });
public ReponseApi ValidateCodeMicrosoft(DataValidateMicrosoft par) { ReponseApi res = new ReponseApi(); res.Codigo = 0; res.Mensaje = ""; res.Respuesta = null; try { if (string.IsNullOrEmpty(par.Cuenta)) { res.Mensaje = "La Cuenta no puede ser nula"; } else if (string.IsNullOrEmpty(par.Secreto)) { res.Mensaje = "El Emisor no puede ser nulo"; } else if (string.IsNullOrEmpty(par.Codigo)) { res.Mensaje = "El Codigo no puede ser nulo"; } else { var authenticator = new TwoStepsAuthenticator.TimeAuthenticator(); bool isok = authenticator.CheckCode(par.Secreto, par.Codigo, par.Cuenta); if (isok != true) { res.Mensaje = "El Código ingresado no es correcto"; } else { res.Codigo = 1; res.Mensaje = "Código Válido"; } } } catch (Exception ex) { //Log Error _logger.Log(LogLevel.Error, ex, ex.Message); } return(res); }
public ReponseApi ValidateCodeGoogle(DataValidateGoogle par) { ReponseApi res = new ReponseApi(); res.Codigo = 0; res.Mensaje = ""; res.Respuesta = null; try { if (string.IsNullOrEmpty(par.Cuenta)) { res.Mensaje = "La Cuenta no puede ser nula"; } else if (string.IsNullOrEmpty(par.Emisor)) { res.Mensaje = "El Emisor no puede ser nulo"; } else if (string.IsNullOrEmpty(par.Codigo)) { res.Mensaje = "El Codigo no puede ser nulo"; } else { // registrar validar dos factores TwoFactorAuthenticator autenticador = new TwoFactorAuthenticator(); bool PinOK = autenticador.ValidateTwoFactorPIN(par.Cuenta, par.Codigo); if (PinOK != true) { res.Mensaje = "El Código ingresado no es correcto"; } else { res.Codigo = 1; res.Mensaje = "Código Válido"; } } } catch (Exception ex) { //Log Error _logger.Log(LogLevel.Error, ex, ex.Message); } return(res); }
public ReponseApi ReconfigurarToken(ReconfiguraUsuario par) { ReponseApi res = new ReponseApi(); ResponseQRGoogle codQR = new ResponseQRGoogle(); res.Codigo = 0; res.Mensaje = ""; res.Respuesta = null; try { var resultCodigo = EjecucionSP.ReconfigurarToken(par.Usuario, par.App, par.CodigoRecuperacion); if (resultCodigo.IndexOf('@') != -1) { string[] datos = resultCodigo.Split('|'); codQR = Login.reconfiguraUsuario(par.App, par.Usuario, datos[0], datos[1]).Result; res.Codigo = 1; res.Mensaje = ""; res.Respuesta = codQR; } else { res.Codigo = 0; res.Mensaje = resultCodigo; } } catch (Exception ex) { string pars = JsonSerializer.Serialize(par); try { EjecucionSP.LogErrores("AccessADController", "validaCodigo", pars, ex.Message); } catch (Exception exc) { _logger.Log(LogLevel.Error, exc, exc.Message); } } return(res); }
public static ReponseApi ValidaCodigoDobleFactor(DataValidateGoogle par) { ReponseApi res = new ReponseApi(); res.Codigo = 0; res.Mensaje = ""; res.Respuesta = null; try { //Obtener Llave Token string LlaveToken = EjecucionSP.ObtenerLlaveToken(par.Usuario, par.App); TwoFactorAuthenticator autenticador = new TwoFactorAuthenticator(); bool PinOK = autenticador.ValidateTwoFactorPIN(LlaveToken, par.Codigo); if (PinOK != true) { res.Mensaje = "El Código ingresado no es correcto"; } else { res.Codigo = 1; res.Mensaje = "Código Válido"; ResponseValidateCode vdCode = new ResponseValidateCode(); vdCode.LlaveDesbloqueo = EjecucionSP.ActualizaEstatusDobleFactor(par.Usuario, par.App, "172.15.20.1"); res.Respuesta = vdCode; } } catch (Exception ex) { //Log Error //_logger.Log(LogLevel.Error, ex, ex.Message); } return(res); }
public ReponseApi GetCodeGoogle(DataGoogle par) { ReponseApi res = new ReponseApi(); res.Codigo = 0; res.Mensaje = ""; res.Respuesta = null; try { if (string.IsNullOrEmpty(par.Emisor)) { res.Mensaje = "El Emisor no puede ser nulo"; } else if (string.IsNullOrEmpty(par.Cuenta)) { res.Mensaje = "La Cuenta no puede ser nula"; } else { TwoFactorAuthenticator autenticador = new TwoFactorAuthenticator(); ResponseQRGoogle resGoogle = new ResponseQRGoogle(); var key = TwoStepsAuthenticator.Authenticator.GenerateKey(); var setupInfo = autenticador.GenerateSetupCode(par.Emisor, par.Cuenta, key, false, par.QRTamaño <= 0 ? 4 : par.QRTamaño); resGoogle.QRImagen = setupInfo.QrCodeSetupImageUrl; resGoogle.LlaveSecreta = key; resGoogle.CodigoManual = setupInfo.ManualEntryKey; res.Codigo = 1; res.Respuesta = resGoogle; } } catch (Exception ex) { //Log Error _logger.Log(LogLevel.Error, ex, ex.Message); } return(res); }
public static MethodResponse <ResponseQRGoogle> reconfiguraUsuario(string app, string usuario, string email, string desbloqueo) { var Response = new MethodResponse <ResponseQRGoogle>(); try { ResponseQRGoogle codQR = new ResponseQRGoogle(); ReponseApi res = DobleFactor.ReconfiguraToken(app, usuario, email); codQR = res.Respuesta; int idUsuario = Int32.Parse(res.Mensaje); EjecucionSP.ActualizaLlaveDesbloqueo(idUsuario, app, desbloqueo); Response.Code = 2; Response.Result = codQR; } catch (Exception ex) { throw ex; } return(Response); }
public ReponseApi validaCodigo(DataValidateGoogle par) { ReponseApi res = new ReponseApi(); res.Codigo = 0; res.Mensaje = ""; res.Respuesta = null; try { if (string.IsNullOrEmpty(par.Usuario)) { res.Mensaje = "El Usuario no puede ser nulo"; } else if (string.IsNullOrEmpty(par.App)) { res.Mensaje = "La App no puede ser nula"; } else if (string.IsNullOrEmpty(par.Codigo)) { res.Mensaje = "El Codigo no puede ser nulo"; } else { res = DobleFactor.ValidaCodigoDobleFactor(par); } } catch (Exception ex) { string pars = JsonSerializer.Serialize(par); try { EjecucionSP.LogErrores("AccessADController", "validaCodigo", pars, ex.Message); } catch (Exception exc) { _logger.Log(LogLevel.Error, exc, exc.Message); } } return(res); }
public static MethodResponse <ActiveResponse> loginUsuario(Credential user, int tipo) { var Response = new MethodResponse <ActiveResponse>(); Validate ActiveUser = new Validate(); GenerateToken NewToken = new GenerateToken(); ActiveResponse objectActive = new ActiveResponse(); int expiraToken; BodyToken Token = new BodyToken(); if (string.IsNullOrEmpty(user.User)) { Response.Code = 0; Response.Message = string.Format("El usuario no puede ser nulo"); } else if (string.IsNullOrEmpty(user.Password)) { Response.Code = 0; Response.Message = string.Format("La contraseña no puede ser nula"); } else if (string.IsNullOrEmpty(user.App)) { Response.Code = 0; Response.Message = string.Format("El código de aplicación no puede ser nulo"); } else { try { expiraToken = user.ExpiracionToken == 0 ? 60 : user.ExpiracionToken; //Checar IP //string ip = HttpContext.Connection.RemoteIpAddress.ToString(); var MetaDatos = ActiveUser.GetUserActive(user.User, user.Password, user.App, expiraToken, tipo); if (MetaDatos.Code != 0) { //Requiere doble factor bool requiere; requiere = EjecucionSP.RequiereDobleFactor(user.App, MetaDatos.Result.Permisos.Area, MetaDatos.Result.Permisos.Perfil); if (requiere) { int config; //Valida si el usuario tiene configurado el token para doble factor config = EjecucionSP.UsuarioConfigurado(user.User, user.App); if (config > 0) { //Se devuelve el response encriptado string llaveDesbloqueo = Encriptacion.GeneraLlave(config); Response.Code = 3; Response.Result = Encriptacion.EncriptaResponse(MetaDatos.Result, Encriptacion.GeneraLlave(config)); Response.Result.IDUsuario = config; EjecucionSP.ActualizaLlaveDesbloqueo(config, user.App, llaveDesbloqueo); } else { //Si no está configurado se devuelve el código QR de configuración ResponseQRGoogle codQR = new ResponseQRGoogle(); ReponseApi res = DobleFactor.ObtenerCodigoConfig(user.App, MetaDatos.Result.Apellidos, MetaDatos.Result.Nombre, user.User, MetaDatos.Result.Telefono, MetaDatos.Result.Email); codQR = res.Respuesta; int idUsuario = Int32.Parse(res.Mensaje); string llaveDesbloqueo = Encriptacion.GeneraLlave(idUsuario); Response.Code = 2; Response.Result = Encriptacion.EncriptaResponse(MetaDatos.Result, llaveDesbloqueo); Response.Result.CodigoQR = codQR; Response.Result.IDUsuario = idUsuario; EjecucionSP.ActualizaLlaveDesbloqueo(idUsuario, user.App, llaveDesbloqueo); } } else { // todo paso bien Response.Code = 1; Response.Result = MetaDatos.Result; // genera token de seguridad Token = NewToken.CreateToken(user.User, user.ExpiracionToken); //Inserta registro en bitácora EjecucionSP.BitacoraAcceso(user.User, user.App, "172.154.22.40"); // se añade al objeto token sus propiedades //InformationToken infoToken = new InformationToken(); //infoToken.Token = Token.TokenCreated; //infoToken.ExpiracionToken = Token.TimeToken; //Response.Result.InformacionToken.Add(infoToken); } } else { Response.Code = 0; Response.Message = MetaDatos.Message; } } catch (Exception ex) { throw ex; } } return(Response); }