Pop

51.Servicios Web.Autenticación Básica. Curso de C# con Visual Studio 2017.

51-.Servicios Web.Autenticación básica

   - En este capítulo del curso de programación en c# con visual studio 2017,vamos a continuar con  los servicios web. Puede ser que no queramos que los métodos de nuestro web service esten accesibles para todo el mundo que conozca la url del servicio al que se realiza la petición. En este caso podemos poner algún mecanismo para validar que quien accede a nuestro web service, es alguien en el que confiamos.

- Uno de las formas de validación más antiguas son las cabeceras SOAP. Los nuevos servicios web suelen hacerse con WCF. Pero en esta entrada del blog vamos a ver un ejemplo de la antigua autenticación SOAP. En el video muestro un ejemplo sobre como poder utilizar las cabeceresa soap en el web service y como realizar la llamada desde un cliente.


- En primer lugar añadimos la cabecera  [SoapHeader("Authentication")] al método que queramos securizar:

        [WebMethod]
        [SoapHeader("Authentication")]

        public List<Pedidos> DamePedidos()
        { ...}

- En segundo lugar nos creamos una clase que herede de  SoapHeader, como por ejemplo esta:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services.Protocols;

namespace ServicioWebPruebas
{
    public class AuthHeader : SoapHeader
    {
      
            public string usuario;
            public string pass;    
       
    }
}

- En tercer lugar implementamos la validación en el método que queramos securizar:

        public AuthHeader Authentication;

        [WebMethod]
        [SoapHeader("Authentication")]
        public List<Pedidos> DamePedidos()
        {

            List<Pedidos> listaPedidos = new List<Pedidos>();
            SqlConnection Con = new SqlConnection(ConfigurationManager.ConnectionStrings["EmpresaConnectionString"].ConnectionString);
            if (Authentication.usuario == ConfigurationManager.AppSettings["Usuario"].ToString() && Authentication.pass == ConfigurationManager.AppSettings["Pass"].ToString())
              
            {
            try
            {
                Con.Open();
                SqlCommand Com = Con.CreateCommand();
                Com.CommandText = "[DamePedidos]";
                Com.CommandType = CommandType.StoredProcedure;
                SqlDataReader reader = Com.ExecuteReader();

                while (reader.Read())
                {
                    Pedidos pedAuc = new Pedidos();

                    pedAuc.NombreUsuario = reader["Nombre"].ToString();
                    pedAuc.FechaPedido1 = Convert.ToDateTime(reader["FechaPedido"].ToString());
                    listaPedidos.Add(pedAuc);
                }


            }
            catch (Exception ex)
            {
                throw new Exception(ex.ToString());
            }
            finally
            {
                if (Con.State == ConnectionState.Open)
                    Con.Close();
                Con.Dispose();
            }
        }
     

            return listaPedidos;
        }

     
    }


- Una vez tenemos echo esto, será necesario para poder consumir el método del web service pasar un usuario y una password.Por ejemplo la llamada a este método desde un cliente sería:

            WSPruebas.Pruebas pruebas = new WSPruebas.Pruebas();
            pruebas.AuthHeaderValue = new WSPruebas.AuthHeader();
            pruebas.AuthHeaderValue.pass = "pass";
            pruebas.AuthHeaderValue.usuario = "pepe";

            WSPruebas.Pedidos[] x = pruebas.DamePedidos();




No hay comentarios:

Publicar un comentario

Curso .NET Core en C# - 34.Creamos nuestro propio log

34.Creamos nuestro propio log Hola a todos. En este curso, analizaremos todos los conceptos básicos, intermedios y avanzados de  ASP.NET...