none
Como implementar seguridad a un web service en asp.net vb ? RRS feed

  • Pregunta

  • Hola a todos!

    Estoy incursionando en el tema de los web service bajo .net.

    Actualmente he logrado crear un web service y dos clientes, uno que consume desde winform y otro desde un webform.

    Funciona sin problemas, el tema es que desconozco como implementar mecanismos de seguridad para que no cualquiera pueda acceder al web service. Solo entidades (otras empresas) autorizadas.

    En Google he encontrado mucho material sobre Xml Encryption, y Xml Signature, todo teoría, pero sin ejemplos prácticos.

    Podrían, recomendarme donde encontrar ejemplos (proyectos) donde se implemente la seguridad para web service?

    Sinceramente ya no se por donde buscar.

    Estoy usando Visual Studio 2013, con .net framework 4.0

    Desde ya muy agradecido por la info que me puedan brindar.

    Saludos a todos!


    Luis

    jueves, 10 de mayo de 2018 23:01

Todas las respuestas

  • Si quieres la opción más sencilla, implementa la seguridad directamente en IIS. Simplemente modifica las propiedades del sitio en el que has publicado el webservice para que no acepte autenticación anónima, y activa algún otro mecanismo de seguridad. Es válido activar la "básica" si la conexión al servicio la haces por https. Después, desde los clientes, simplemente le pasas "Credentials" al proxy del servicio antes de ejecutar la llamada al servidor.
    viernes, 11 de mayo de 2018 5:53
  • Alberto muchas gracias  por tu respuesta.

    Aprovecho a consultarte dos cosas

    1) En caso de usar la autenticación básica, entiendo que tengo que indicar un dominio en IIS? como puedo hacer las pruebas en localhost directamente ? en dominio pongo "localhost"?

    Creé un usuario local en mi maquina pero luego al actualizar la referencia al web service desde el cliente, me pide autenticacion pero no me reconoce el usuario ni la contraseña. De seguro algo me está faltando o estoy haciendo mal.

    2) En caso de no usar la autenticación básica, que otras opciones tengo ?

    La información que se va a transferir si bien no son datos bancarios, podríamos decir que es sensible, por lo tanto me gustaría darle un mayor nivel de seguridad.

    He leido teoria sobre xml signature y xml encryption, pero desconozco a nivel práctica como encararlo.

    Desde ya muchas gracias por el tiempo y respuesta.

    Saludos a todos


    Luis


    • Editado Luis 2015 viernes, 11 de mayo de 2018 22:18
    viernes, 11 de mayo de 2018 22:13
  • 1) En caso de usar la autenticación básica, entiendo que tengo que indicar un dominio en IIS?

    No, no tiene nada que ver. Lo de la autenticación es una propiedad que se marca en el Sitio Web en IIS, no tiene nada que ver con ningún dominio. Funciona idénticamente con localhost, o con la IP del sitio, o con cualquiera de los dominios que puedas haberle asignado. Creo que te confundes con el https, que sí que depende del dominio (el dominio, incluso aunque sea localhost, tiene que figurar en el certificado que asignas al habilitar https).

    Y la básica tiene que funcionar con un usuario local. Si no funciona, tiene que haber algo mal configurado.

    2) En caso de no usar la autenticación básica, que otras opciones tengo ?

    Otra opción que también usa seguridad de transporte es usar la autenticación integrada de Windows. Esta es segura incluso aunque no uses https, pero si los datos son delicados y por lo tanto vas a usar https de todas maneras, entonces te da un poco igual.

    La otra alternativa es no usar seguridad a nivel de transporte, sino seguridad a nivel de paquete. En este caso usarías las cabeceras SOAP para pasar credenciales, y opcionalmente podrías cifrar los paquetes e incluso firmarlos. Si vas a ir por esta vía, utiliza WCF (.svc en lugar de .asmx para hacer el servicio web). WCF tiene la opción de habilitar estos mecanismos desde el fichero .config (del servidor y del cliente). Pero es MUCHO más complicado de configurar que la seguridad de transporte en IIS.

    sábado, 12 de mayo de 2018 8:16