2008-09-23 31 views
8

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

3

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

1

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.

1

Establecería una regla de firewall para restringir el acceso a una lista blanca de direcciones IP.

1

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

1

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?

+0

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

0

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.

1

Un simple módulo HTTP funcionará. Solo codifique (o desde config) el IP/host permitido y rechace todos los demás.

0

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.

1

¿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.

+0

Books24x7 y suscripciones de Safari al rescate :) Echaré un vistazo al Capítulo 34. Thx. – Bullines