2010-03-15 6 views
5

Attualmente sto lavorando su un'applicazione .Net che fa richieste HTTP ad alcune applicazioni web ospitate su un server IIS. L'applicazione viene distribuita tramite ClickOnce e funziona perfettamente su architetture di reti semplici.
Uno dei nostri clienti ha una rete molto complessa che comprende un server di autenticazione personalizzato su cui l'utente deve prima accedere per essere autenticato e ottenere l'accesso ad altre applicazioni su questa rete. Una volta autenticato su questo server, viene creato un cookie di sessione che viene inviato all'utente. Ogni volta che l'utente effettua una richiesta su un server sicuro della rete, questo cookie viene controllato per garantire l'accesso all'utente. Se questo cookie non viene inviato con la richiesta, l'utente viene reindirizzato alla pagina di accesso. L'unico browser utilizzato è Internet Explorer.
Questo cookie non è accessibile dalla nostra applicazione .net poiché viene eseguito in un altro processo rispetto al processo di Internet Explorer utilizzato per registrare l'utente, e quindi non viene inviato con le nostre richieste, che non può essere completato poiché i reindirizzamenti del server tutte le nostre richieste alla pagina di accesso.
Ho cercato di incorporare la mia applicazione in Internet Explorer rendendo visibile la COM di controllo principale e la creo su una pagina HTML con un tag. Funziona correttamente, tuttavia i cookie delle sessioni impostati in precedenza nel browser non vengono inviati quando il controllo ActiveX effettua richieste web.
Speravo che questa condivisione delle informazioni sulla sessione sarebbe stata automatica (anche se non ci credevo davvero). Quindi le mie domande sono: è possibile avere accesso a questo cookie nell'ActiveX incorporato? Come? Fa la differenza usare un componente di interoperabilità COM .Net invece di un controllo ActiveX "vero"? Inoltre, ci sono parole di sicurezza specifiche per descrivere questo tipo di comportamenti (dato che non sono affatto un esperto su argomenti di sicurezza, questa mancanza di terminologia adeguata rende molto più difficile trovare le risorse necessarie)?Come condividere i cookie di sessione tra Internet Explorer e componenti ActiveX ospitati in una pagina Web?

Il mio obiettivo è far sì che le richieste della mia applicazione risultino uguali a quelle richieste dalle richieste del browser host e ho pensato che l'incorporamento dell'applicazione come controllo ActiveX nel browser fosse l'unico modo per ottenere questo, tuttavia qualsiasi suggerimento su un altro per fare questo è il benvenuto.

risposta

2

Un modo che ho trovato per ottenere questo è di avere il componente ActiveX che incorpora il componente di Internet Explorer (oggetto WebBrowser), e di usarlo per fare le mie richieste http invece di oggetti di classe standard. In questo modo, i cookie di sessione (anche quelli solo http) impostati in Internet Explorer diventano disponibili per Internet Explorer incorporato e vengono inviati automaticamente con ciascuna richiesta.

+0

funziona! Grazie! – jerem

0

Non so molto su .NET, IIS o ActiveX, ma sarebbe possibile passare i cookie all'applicazione incorporata? Javascript ha document.cookie che dovrebbe contenere tutti i cookie per il dominio corrente (quelli inviati per la richiesta di pagina corrente). Probabilmente è possibile che questo valore sia passato alla tua applicazione incorporata in qualche modo.

Ci scusiamo per la risposta vaga. Spero che possa almeno indirizzarti verso una nuova direzione.

+1

Purtroppo questo non è possibile: il cookie è un cookie solo http e quindi non è accessibile dal codice cliente. – jerem

+0

Beh, mi dispiace per non essere affatto d'aiuto allora = D – Chibu

Problemi correlati