Estamos en proceso de crear una nueva pila de aplicaciones web. La funcionalidad del back-end estará fuertemente basada en el servicio, pero como algunos de estos servicios deberán estar expuestos a Internet pública, tendré que asegurarlos. En parte, tuve éxito al bloquear las URL de servicio utilizando el modelo estándar de membresía/proveedor de funciones. La parte con la que estoy teniendo problemas por el momento es si alguna vez construimos una aplicación iOS (o Android) sobre nuestra Pila de Servicios, ¿cómo podríamos manejar la seguridad?¿Cómo debo proteger mi WCF Rest/JSON Services para su uso con una aplicación iOS/Android?
Estoy abierto a sugerencias. He incluido algo de información a continuación sobre la configuración hasta el momento.
ASP.NET Sitio web que utiliza Membresía/Proveedor de rol/Autenticación de formularios que se ejecuta en una conexión HTTPS. Solo las páginas predeterminadas/de inicio de sesión/preguntas frecuentes son públicamente accesibles. Todas las otras páginas viven en una carpeta llamada "/ Secure" que requiere que se autentique.
WCF WebService. Toda la funcionalidad respaldada se proporciona a través de este servicio. Los puntos finales solo están disponibles en la intranet local. el código de sitio web de ASP.NET detrás se comunica con el servicio utilizando una referencia de servicio estándar.
WCF REST/JSON Services. Algunas de las funciones anteriores se vuelven a empaquetar en un servicio WCF REST/JSON. Esto se configuró usando el "WCF REST Template 40". El servicio se enruta usando System.Web.Routing a "/ Secure/jsonsvc/*". Debido a que esto se encuentra debajo de la carpeta/Secure, hereda la seguridad de miembro/rolprovider para cualquier solicitud. p.ej. Las llamadas xmlhttp a este servicio desde un widget JQuery del lado del cliente solo funcionarían para los usuarios que ya iniciaron sesión en nuestro sitio.
En el futuro, es posible que estos mismos servicios de WCF Rest/JSON deban ser consumidos por una aplicación externa (por ejemplo, una aplicación de IPad). ¿Cuál sería la mejor manera de abordar esto, dada la falta de un contexto HTTP de sitio/sesión/inicio de sesión?
El mecanismo de autenticación que mencionó en el n. ° 1, ¿también está expuesto como parte del servicio web en el n. ° 3? – momo
¿Quiere decir ... hay una versión de servicio web del método de inicio de sesión del Proveedor de Membresía. No, no hay. y no estoy seguro de cómo eso funcionaría. Incluso si expuse un método que requiere un nombre de usuario y una contraseña, ¿qué devolvería? La versión actual da como resultado el valor de la cookie ASPXAUTH como parte de las solicitudes en el navegador xmlhttp. cómo simularías eso en un cliente nativo. –
Para la mayoría de las aplicaciones que creamos, la llamada de inicio de sesión del servicio web devolverá un token de sesión que las llamadas posteriores al servicio web deben incluir.Puede que le interese la pregunta que recientemente contesté http://stackoverflow.com/questions/7296729/handling-login-functionality-for-native-app-connecting-to-web-service/7296764#7296764. Podría ser aplicable a su caso. – momo