Asegurando Servicios Web – WSE 3.0


Para este artículo les traigo una implementación simple de WSE, ya que generalmente comenzamos por implementar servicios web y nuestro aval es, "implementamos WS para proporcionar intercambio de mensajes e interconectar sistemas heterogéneos, y otras tantas abstracciones, de libro el tema (hay excepciones, como siempre, pero en un alto porcentaje es lo que les cuento), veamos, todo lo lindo tiene sus complicaciones, por eso nada mejor que pensar en la seguridad, o sea el concepto es claro, el punto es no nos olvidemos de implementarlo con seguridad, sigamos nuestro objetivo.


Empecemos por conocer un poco de WSE (Web Services Enhancements), para Microsoft ya existen 3 versiones lanzadas, ahora de forma simple hay que definir. ¿Qué es WSE?


"Es la implementación de Microsoft para Servicios Web Avanzados que proporciona algunas de las especificaciones WS-*"



  • WSE 1.0 y 2.0 se integran con VS.2003 (1.x)

  • WSE 3.0 se integra con VS.2005 (2.0)

Este esquema está totalmente focalizado en la seguridad y el modelo implementado trata puntualmente el esquema de mensajes SOAP.


Pero para sacarse más dudas si es que existen sobre la tecnología les dejo algunos vínculos:


http://www.microsoft.com/spanish/msdn/articulos/archivo/030505/voices/whywse.mspx


http://msdn.microsoft.com/es-es/library/ms752257.aspx


http://es.wikipedia.org/wiki/WS-Security


Ahora vamos a lo nuestro, les cuento, el escenario armado es, un servicio web que va a proveer cálculos importantes a un sistema de gestión escritorio tradicional (simulado obviamente).


Veamos el servicio web de ejemplo:




Tenemos algo interesante por ver:


El atributo "Policy" esto es fundamental porque tiene que ver con la configuración de WSE que aplicaremos.


Veamos el método que vamos a llamar, muy simple:



///
<summary>



/// Calcular un valor simulado para ejemplo de implementacion



///
</summary>



///
<param name="valorGeneral"></param>



///
<param name="valorControl"></param>



///
<returns></returns>


[WebMethod]



public
int CalculoCoeficiente(int valorGeneral, int valorControl)


{



return ((valorControl * valorGeneral) + 150);


}




Sigamos, solo nos resta validar la configuración de seguridad:




Al instalar el WSE 3.0 nuestro IDE comienza a tener estas opciones disponibles, al consultar las propiedades de mi servicio web puedo optar por ingresar configuración de seguridad, como muestra la figura anterior.


Bien, en mi servicio voy a activar el mecanismo:




Y posteriormente voy a trabajar con las políticas:




En este caso tengo varias políticas definidas, pero importante es la implementada con el nombre Server.


Veamos un paso a paso de la configuración del server (Política) para este caso:




Inicio del asistente




Definiciones como que lo que estoy configurando es un servicio, y el método de autenticación, en este caso algo simple en donde le proveo el nombre de usuario y password.




Para este método podría definir nombres de usuario o roles habilitados, lo voy a dejar general.




Importante punto, donde defino la seguridad del mensaje.




Configuración del certificado de servidor a utilizar.


Bien, puede que quiera conocer con un log de mensajes de entrada y salida de la implementación y eso lo hago de esta forma:




Ya nuestro servicio web quedó configurado para trabajar con la política detallada, veamos como consumir el mismo.


Para el esquema cliente tengo que realizar la misma configuración paso a paso que en el caso del server cambiando las configuraciones para el objetivo (no desarrollado).


En el ejemplo voy a utilizar un token programático, el diseño de uso es el siguiente:




El código implementado sobre el button es el siguiente:




Token = new
UsernameToken(textBox1.Text, textBox2.Text,PasswordOption.SendPlainText);




ServicioSeguro.ServicioBasicoWse proxy = new ServicioSeguro.ServicioBasicoWse();


proxy.SetClientCredential<UsernameToken>(Token);


proxy.SetPolicy("Cliente");





MessageBox.Show(proxy.Definiciones(10).ToString());


Analicemos:


Creo un token, lo completo con credenciales, creo mi servicio seguro, posteriomente le adiero el token al mismo, le establezco la politica a utilizar y lo llamo.


De esta forma puedo consumir servicios web implementando de forma simple y con asistentes declarativos seguridad soportando especificaciones WS-*.


Interesante no…. Espero les sea de utilidad y seguidamente les voy a mostrar algunas implementaciones de WCF haciendo uso de este acercamiento…

Comentarios

  1. Muy bueno el articulo, interesante la forma tan sencilla de establecer seguridad en un servicio, algo que en general cuesta mucho con otras tecnologias.

    ResponderBorrar
  2. Excelente articulo!. Una ayudita, como puedo generar los certificados servidor? he generado unos sertificados pero solo puedo verlos en la configuracion del cliente.

    ResponderBorrar
  3. Hola muy buen articulo, me gustó la explicación, te felicito, sin embargo, me quedaron algunas dudas, la clase UserName esa clase se agrega como una màs de las soportadas por el framework al instalar WSE o debo realizarla yo, disculpa si es algo tonta mi pregunta pero pues me surgiò la duda y bueno supongo que de ese tipo debe ser el token por eso lo pregunto, ok gracias..

    ResponderBorrar

Publicar un comentario

Entradas más populares de este blog

Modelando relaciones en UML, un acercamiento a las Asociaciones

Utilizando Intents implícitos para crear actividades

Secuencias…Modelado indispensable