Tengo un servicio web (ASMX) con algunos métodos web en nuestro servidor web de producción. En un servidor web interno separado (que no está expuesto públicamente) tengo otro sitio web que utilizará los métodos web públicos de ASMX. ¿Cuáles son algunas de las mejores formas de proteger el servicio web de modo que solo el servidor web interno pueda acceder a los servicios web que se ejecutan en el servidor web expuesto públicamente?Protección de un servicio web
Respuesta
Una de las maneras más fáciles es pasar credenciales en el encabezado del mensaje. Entonces cada llamada pasa a lo largo de la información necesaria para determinar si el usuario está autorizado. WSE hace que algo de eso sea más fácil, pero una de las descripciones más sucintas de este proceso se puede encontrar en el libro de Rocky Lhotka sobre Business Objects. Recibo muchos libros para que los editores los revisen y este tuvo la mejor explicación
Suponiendo que no tiene la opción de usar WCF, recomendaría usar WSE 3 (Mejoras del servicio web). Puede obtener el toolkit/SDK thingummy en MS's site
Para limitar el acceso solo a máquinas internas (como creo que su pregunta), configuré un sitio web separado en IIS y lo configuré para que solo respondiera al dirección IP interna de su servidor.
Establecería una regla de firewall para restringir el acceso a una lista blanca de direcciones IP.
Utilice IIS directory security IP address restrictions, y limite el acceso solo a esa dirección IP interna del servidor web.
Si no puede hacer eso y no puede configurar un nombre de usuario/contraseña en el directorio, utilice WSE y agregue un nombre de usuario/contraseña en el servicio, o busque certificados si desea un poco de diversión sonrisa
Tal vez no entendí correctamente, pero ¿por qué exponer los métodos web de forma pública si solo van a ser consumidos por el servidor interno?
En este momento, lo que me viene a la mente es el filtrado de IP en IIS. Rápido de aplicar, debería funcionar en su escenario.
TLS con certificados de cliente. Consulte Wikipedia entry para comenzar.
Un simple módulo HTTP funcionará. Solo codifique (o desde config) el IP/host permitido y rechace todos los demás.
Tenga en cuenta que there are ways around IP de lista blanca. No me malinterprete, es una gran idea, y definitivamente debe hacerlo, pero si su presupuesto/recursos lo permiten, puede ampliar su modelo de amenaza.
¿Si solo es el servidor interno el que accederá a los archivos de asmx? Puede configurarlos en IIS en un sitio web o directorio virtual por separado, y luego colocar algunas restricciones de IP en el sitio. En propiedades, vaya a Seguridad del directorio, luego "Restricciones de la dirección IP y del nombre de dominio".
Además, para las contraseñas, WSE 3 es el nuevo objetivo, pero encontré un método simple en un libro de Apress llamado "Pro ASP.NET 2.0 en C# 2005" Capítulo 34. (Nota, la versión más reciente) de este libro omite este capítulo). La sección es la autenticación personalizada basada en tickets.
Books24x7 y suscripciones de Safari al rescate :) Echaré un vistazo al Capítulo 34. Thx. – Bullines
- 1. Protección de la comunicación de android a un servicio web
- 2. Protección de servicios web
- 3. ¿Es un servicio web o un servicio web?
- 4. ¿Es un servicio WCF un servicio web?
- 5. ¿Garantizar un servicio web?
- 6. Protección de un servidor web Linux para acceso público
- 7. Hacer un servicio web seguro
- 8. Prueba de un servicio web de WCF
- 9. Aplicación de servicio web
- 10. Devolver datos XML de un servicio web
- 11. Creación de un servicio web con Perl
- 12. Servicio web vs aplicación web
- 13. cliente web para servicio web
- 14. web error de servicio
- 15. Protección del punto final del servicio WCF con autenticación personalizada
- 16. Protección de Elmah en el sitio web de ASP.NET
- 17. Protección de medios de imagen en una aplicación web
- 18. Protección del contenido del sitio web de los rastreadores
- 19. ¿Puede un servicio web devolver una transmisión?
- 20. ¿Cómo iniciar automáticamente un servicio web C#?
- 21. ¿Cómo construir un servicio web computacionalmente intensivo?
- 22. Consumir un servicio web usando Javascript
- 23. Compruebe si existe un servicio web
- 24. Autenticación en un servicio web RESTful
- 25. Simplemente consumiendo un servicio web en Java
- 26. Cómo invocar un servicio web utilizando Java
- 27. Llamar a un servicio web desde C++
- 28. ¿Cómo asegurar un servicio web en .net?
- 29. Consumir un servicio web REST XML
- 30. Servicio web ficticio
En realidad, está entendiendo correctamente, creo. Eso me hace preguntarme por qué el servicio web está incluso expuesto a través del reenvío de puertos ??? – leppie