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