Robert Pineda

Yo soy un Ingeniero.

Contacto

Robert Alejandro Pineda

Soy Ingeniero de Sistemas de la universidad EAN, mis fortalezas principales son la constancia y responsabilidad para desarrollar e implementar soluciones a través de sistemas de información. Mi habilidad dentro de mi profesión es el dinamismo en la búsqueda y construcción de óptimas soluciones a un problema dado.

¿Qué es lo que haces?

Me especializo en cinco campos: Consultoría, realidad aumentada, software BPM, desarrollo y arquitectura web. Puedes ver algunos ejemplos en mí Portafolio.

¿Qué tecnologías utilizas?

Unity3D, Vuforia, .Net, C#, Visual Basic, JavaScript, BootStrap, SQLServer, Oracle.

  • Bogotá D.C, Colombia.
  • 320 4 91 38 81
  • admin@robertpineda.com
  • www.robertpineda.com
Me

Capacidades Profesioneles

Poseo habilidad en el liderazgo y gestión de proyectos de SCRUM y RUP, así como la presentación de propuestas, estimación de tiempos, todo esto argumentado en la experiencia de más de 10 años en equipos de programación en la cual mostré mi capacidad de adaptación a diferentes situaciones de trabajo, desempeñándome en varios ambientes técnicos de programación con buen dominio de C#, Visual Basic .NET, ASP.NET, ASP, PHP, XML, XAML, JavaScript, HTML5, CSS3, MVC, C++, BootStrap, manejo de todos los IDE de Visual Studio .Net, así como Unity3d RA, realizando proyectos para Windows, Windows Phone y Web, manejo de bases de datos MySql, Postgrest, SQLServer, Oracle, IBM DB2, Teradata, NoSql MongoDB, construcción de arquitecturas empresariales y de desarrollo orientada al dominio y a pruebas.

Desarrollo .Net 90%
Bases de datos 70%
Unity3d 80%
Arquitectura 70%

Seguridad Informatica,

Se asesora e implementa la seguridad de la información, estándares NTC ISO 31000, ISO 27000.

Consultoria

Se realiza estudios sobre cambios de tecnología, adquisición, adopción de estándares, implementación y modelado BPM.

Desarrollo a la medida.

Desarrollo en Visual Studio .Net su idea o necesidad.

Diseño Web.

Desarrollo de paginas web, Comerciales, Personales, Contacto.

Realidad Aumentada.

Desarrollo de campañas de realidad aumentada.

Soporte.

Soporte para temas de IT de su compañía, ya sea presencial o virtual.

12
Años de experiencia.
15
Clientes satisfechos.
3901
facebook like.
18
Proyectos exitosos.
  • Implementar seguridad en Servicio Web C#

    Implementar seguridad en Servicio Web C#

    Los encabezados SOAP nos dan un método para pasar datos a un método de Web Service XML y obtener datos del mismo, siempre y cuando los datos no sean usados en la funcionalidad principal del método. En esta entrada vamos a ver como implementar una solución para brindar seguridad a nuestros Web Services realizados en la plataforma .NET.

    Para entender un poco mas a lo que llegaremos veamos que nos dice MSDN sobre SoapHeader: La comunicación con un método de servicio Web XML mediante SOAP sigue un formato estándar. Parte de este formato son los datos que se codifican en un documento XML. El documento XML consta de una etiqueta Envelope que, a su vez, consta de un elemento requerido Body y un elemento opcional Header. El elemento Body incluye los datos específicos del mensaje. El elemento opcional Header puede contener información adicional no relacionada directamente con el mensaje específico. Cada elemento secundario del elemento Header se denomina encabezado SOAP.

    Vamos a darle un poco de seguridad al método mas difundido y conocido por todos HelloWorld().

    Primero vamos a crear un proyecto de tipo web. en el vamos a crear un clase, esta va a representar los parámetros del encabezado soap, en nuestro caso el nombre de usuario y la clave. Esta clase va ha derivar de la SoapHeader perteneciente a el espacio de nombre System.Web.Services.Protocols

        /// <summary>
        /// Clase que se encarga de contener las credenciales de autenticación: Usuario y Clave
        /// </summary>
        public class Autenticacion : SoapHeader
        {
            private string sUserPass;
            private string sUserName;

            /// <summary>
            /// Lee o escribe la clave del usuario
            /// </summary>
            public string UsuarioClave
            {
                get
                {
                    return sUserPass;
                }
                set
                {
                    sUserPass = value;
                }
            }

            /// <summary>
            /// Lee o escribe el nombre del usuario
            /// </summary>
            public string UsuarioNombre
            {
                get
                {
                    return sUserName;
                }
                set
                {
                    sUserName = value;
                }
            }
        }


    Luego creamos la clase ServicioSeguro que va a contener una referencia a la clase Autenticacion en conclusión va a tener la información del usuario. Esta clase va a derivar de WebService que pertenece a el espacio de nombre System.Web.Services. De esta clase derivan todos nuestros Web Services

        /// <summary>
        /// Contiene la referencia a la clase Autenticacion
        /// </summary>
        public class ServicioSeguro : WebService
        {
            public Autenticacion CredencialAutenticacion;
        }


    Luego agregamos un Web Service llamado wsSeguridad.asmx. Como ya les había recordado los web services que hacemos heredan de WebService. Cambiamos a que derive de la clase ServicioSeguro que creamos anteriormente, no perderemos la funcionalidad ya que esta clase deriva de WebService. Recordar que SoapHeader perteneciente a el espacio de nombre System.Web.Services.Protocols

        /// <summary>
        /// Servicio de prueba
        /// </summary>
        [WebService(Namespace = "http://tempuri.org/SecureWebService/SecureWebService")]
        [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
        [System.ComponentModel.ToolboxItem(false)]
        public class wsSeguridad : ServicioSeguro
        {
            /// <summary>
            /// Metodo de prueba.
            /// </summary>
            /// <returns>"Hello World si esta autenticado y puede consumir el WS, NONOO si sus credenciales no son validas"</returns>
            [WebMethod, SoapHeader("CredencialAutenticacion")]
            public string HelloWorld()
            {
                if (VerificarPermisos(CredencialAutenticacion))
                {
                    return "Hello World";
                }
                else
                {
                    return "NONOO";
                }
            }
            public static Boolean VerificarPermisos(Autenticacion value)
            {
                if (value == null)
                {
                    return false;
                }
                else
                {
                    //Verifica los permiso Ej. Consulta a BD
                    if (value.UsuarioNombre == "user" && value.UsuarioClave == "pwd")
                    {
                        return true;
                    }
                    else
                    {
                        return false;
                    }
                }
            }
        }


    Ahora realicemos una pagina para probar la seguridad de nuestro servicio.

        public partial class pruebas : System.Web.UI.Page
        {
            protected void Page_Load(object sender, EventArgs e)
            {
                if (!IsPostBack)
                {
                    wsSeguridad ws = new wsSeguridad();

                    Autenticacion auten = new Autenticacion();

                    auten.UsuarioNombre = "user";
                    auten.UsuarioClave = "pwd2";

                    ws.CredencialAutenticacion = auten;

                    Response.Write(ws.HelloWorld());
                }
            }
        }

  • OBTENGA UNA CITA GRATIS AHORA

    Permítame ayudarle a llevar su negocio a la nube, mostrándole como mis servicios pueden potenciar su compañía.

    Ubicación

    Bogotá D.C, Colombia.

    Correo Electronico

    admin@robertpineda.com
    robertpineda@hotmail.com

    Celular

    320 4 91 38 81