De la seguridad en Servicios Web para .Net - Willy .Net
De la seguridad en Servicios Web para .Net - Willy .Net
De la seguridad en Servicios Web para .Net - Willy .Net
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
En este ejemplo, el tipo de aut<strong>en</strong>ticación negociada solicitada puede ser <strong>la</strong>aut<strong>en</strong>ticación Kerberos o NTLM.Solicitar siempre un tipo de aut<strong>en</strong>ticación específicaEs recom<strong>en</strong>dable solicitar siempre un tipo de aut<strong>en</strong>ticación específico, tal como semuestra más arriba. Evite el uso directo de <strong>la</strong> c<strong>la</strong>se <strong>Net</strong>workCred<strong>en</strong>tial, como serefleja <strong>en</strong> el sigui<strong>en</strong>te fragm<strong>en</strong>to de código.proxy.Cred<strong>en</strong>tials = new<strong>Net</strong>workCred<strong>en</strong>tial("username", "password", "domainname");Este método debería evitarse <strong>en</strong> el código de producción porque se pierde el controldel mecanismo de aut<strong>en</strong>ticación que utiliza el servicio <strong>Web</strong> y, como consecu<strong>en</strong>cia, sepierde también el control con re<strong>la</strong>ción al uso de <strong>la</strong>s cred<strong>en</strong>ciales.Por ejemplo, es probable que se produzca un desafío de aut<strong>en</strong>ticación Kerberos oNTLM desde el servidor pero, <strong>en</strong> su lugar, recibirá un desafío básico. En este caso,el nombre de usuario y <strong>la</strong> contraseña proporcionados se <strong>en</strong>viarán al servidor <strong>en</strong>formato de texto no cifrado.Establecer <strong>la</strong> propiedad PreAuth<strong>en</strong>ticateLa propiedad PreAuth<strong>en</strong>ticate del proxy puede establecerse como verdadera ofalsa. Establézca<strong>la</strong> <strong>en</strong> verdadera (true) <strong>para</strong> proporcionar <strong>la</strong>s cred<strong>en</strong>ciales deaut<strong>en</strong>ticación específicas <strong>para</strong> g<strong>en</strong>erar un <strong>en</strong>cabezado HTTP WWW-auth<strong>en</strong>ticate<strong>para</strong> transferir con <strong>la</strong> solicitud <strong>Web</strong>. Esta propiedad guarda <strong>la</strong> d<strong>en</strong>egación de accesodel servidor <strong>Web</strong> <strong>en</strong> <strong>la</strong> solicitud y lleva a cabo <strong>la</strong> aut<strong>en</strong>ticación <strong>en</strong> <strong>la</strong> sigui<strong>en</strong>tesolicitud de reint<strong>en</strong>to.Nota: <strong>la</strong> preaut<strong>en</strong>ticación sólo se aplica cuando el servicio <strong>Web</strong> se aut<strong>en</strong>ticacorrectam<strong>en</strong>te <strong>la</strong> primera vez. La preaut<strong>en</strong>ticación no ti<strong>en</strong>e repercusión alguna <strong>en</strong><strong>la</strong> primera solicitud <strong>Web</strong>.private void ConfigureProxy( <strong>Web</strong>Cli<strong>en</strong>tProtocol proxy,string domain, string username,string password ){// To improve performance, force pre-auth<strong>en</strong>ticationproxy.PreAuth<strong>en</strong>ticate = true;// Set the cred<strong>en</strong>tialsCred<strong>en</strong>tialCache cache = new Cred<strong>en</strong>tialCache();cache.Add( new Uri(proxy.Url),"Negotiate",new <strong>Net</strong>workCred<strong>en</strong>tial(username, password, domain) );proxy.Cred<strong>en</strong>tials = cache;proxy.ConnectionGroupName = username;}Utilizar <strong>la</strong> propiedad ConnectionGroupNameT<strong>en</strong>ga <strong>en</strong> cu<strong>en</strong>ta que el código anterior establece <strong>la</strong> propiedadConnectionGroupName del proxy de servicio <strong>Web</strong>. Este paso sólo es necesario siel contexto de <strong>seguridad</strong> utilizado <strong>para</strong> <strong>la</strong> conexión con el servicio <strong>Web</strong> varía de unasolicitud a <strong>la</strong> otra, tal como se describe a continuación.