2010-03-15 13 views
5

Actualmente estoy trabajando en una aplicación .Net que realiza solicitudes HTTP a algunas aplicaciones web alojadas en un servidor IIS. La aplicación se implementa a través de ClickOnce y funciona bien en arquitecturas de redes simples.
Uno de nuestros clientes tiene una red muy compleja que involucra un servidor de autenticación personalizado en el que el usuario primero tiene que registrarse para autenticarse y obtener acceso a otras aplicaciones en esta red. Una vez autenticado en este servidor, se crea una cookie de sesión y se envía al usuario. Cada vez que el usuario realiza una solicitud en un servidor seguro de la red, esta cookie se marca para otorgar acceso al usuario. Si esta cookie no se envía con la solicitud, se redirige al usuario a la página de inicio de sesión. El único navegador utilizado es Internet Explorer.
No se puede acceder a esta cookie desde nuestra aplicación .NET ya que se ejecuta en un proceso distinto al proceso de Internet Explorer que se usó para registrar al usuario y no se envía con nuestras solicitudes, que no pueden completarse ya que el servidor redirige cada una de nuestras solicitudes a la página de inicio de sesión.
Eché un vistazo a la incrustación de mi aplicación en Internet Explorer al hacer visible el control principal COM y crearlo en una página HTML con una etiqueta. Está funcionando correctamente, sin embargo, las cookies de sesión establecidas anteriormente en el navegador no se envían cuando el control ActiveX realiza solicitudes web.
Esperaba que compartir la información de la sesión fuera automático (aunque realmente no lo creía). Entonces mis preguntas son: ¿es posible tener acceso a esta cookie en el ActiveX incorporado? ¿Cómo? ¿Hace una diferencia el uso de un componente .Net COM-interop en lugar de un control ActiveX "verdadero"? Además, ¿hay palabras de seguridad específicas para describir este tipo de comportamientos (dado que no soy un experto en absoluto en temas de seguridad, esta falta de terminología adecuada hace que sea mucho más difícil encontrar los recursos necesarios)?¿Cómo compartir cookies de sesión entre Internet Explorer y un componente ActiveX alojado en una página web?

Mi objetivo es que las solicitudes de mi aplicación se vean iguales a las solicitudes hechas por las solicitudes del navegador del host, y pensé que la única manera de lograr esto era incluir la aplicación como un control ActiveX en el navegador, sin embargo cualquier sugerencia en otro para hacer esto es bienvenido.

Respuesta

2

Una forma que encontré para lograr esto es tener el componente ActiveX incorporando el componente de Internet Explorer (objeto WebBrowser) y usarlo para hacer mis solicitudes http en lugar de objetos de clase estándar. Al hacer esto, las cookies de sesión (incluso las de solo http) establecidas en Internet Explorer se vuelven disponibles para el Internet Explorer incorporado y se envían automáticamente con cada solicitud.

+0

¡funciona! ¡Gracias! – jerem

0

Realmente no sé mucho sobre .NET, IIS o ActiveX, pero ¿sería posible pasar las cookies a la aplicación incrustada? Javascript tiene document.cookie que debe contener todas las cookies para el dominio actual (las enviadas para la solicitud de la página actual). Probablemente sea posible que este valor pase a su aplicación incorporada de alguna manera.

Disculpa la vaga respuesta. Espero que al menos pueda apuntar en una nueva dirección.

+1

Desafortunadamente, esto no es posible: la cookie es una cookie de solo http y, por lo tanto, no se puede acceder por código de cliente. – jerem

+0

Bueno, perdón por no ser de ayuda, entonces = D – Chibu

Cuestiones relacionadas