2010-03-15 2 views
5

Ich arbeite derzeit an einer .Net-Anwendung, die HTTP-Anforderungen an einige Webanwendungen auf einem IIS-Server bereitstellt. Die Anwendung wird über ClickOnce bereitgestellt und funktioniert problemlos in einfachen Netzwerkarchitekturen.
Einer unserer Kunden verfügt über ein sehr komplexes Netzwerk mit einem benutzerdefinierten Authentifizierungsserver, auf dem sich der Benutzer zuerst anmelden muss, um authentifiziert zu werden und Zugriff auf andere Anwendungen in diesem Netzwerk zu erhalten. Nach der Authentifizierung auf diesem Server wird ein Sitzungscookie erstellt und an den Benutzer gesendet. Jedes Mal, wenn der Benutzer dann eine Anfrage an einen gesicherten Server des Netzwerks stellt, wird dieser Cookie überprüft, um dem Benutzer Zugriff zu gewähren. Wenn dieser Cookie nicht mit der Anfrage gesendet wird, wird der Benutzer auf die Anmeldeseite umgeleitet. Der einzige verwendete Browser ist der Internet Explorer.
Dieser Cookie kann nicht von unserer .net-Anwendung aus aufgerufen werden, da er in einem anderen Prozess ausgeführt wird als der Internet Explorer-Prozess, der zum Anmelden des Benutzers verwendet wurde und daher nicht mit unseren Anforderungen gesendet wird, die nicht ausgeführt werden können, da der Server umgeleitet wird alle unsere Anfragen auf die Login-Seite.
Ich habe meine Anwendung in Internet Explorer eingebettet, indem ich das Hauptsteuerelement COM sichtbar gemacht und es auf einer HTML-Seite mit einem Tag erstellt habe. Es funktioniert ordnungsgemäß, jedoch werden die zuvor im Browser eingestellten Sitzungscookies nicht gesendet, wenn das ActiveX-Steuerelement Webanforderungen stellt.
Ich hatte gehofft, dass das Teilen der Sitzungsinformationen automatisch sein würde (obwohl ich es nicht wirklich glaubte). Meine Fragen lauten also: Ist es möglich, im eingebetteten ActiveX auf diesen Cookie zuzugreifen? Wie? Macht es einen Unterschied, eine .Net COM-Interop-Komponente anstelle eines "echten" ActiveX-Steuerelements zu verwenden? Gibt es auch bestimmte Sicherheitswörter, um diese Art von Verhalten zu beschreiben (da ich bei Sicherheitsthemen überhaupt kein Experte bin, macht es der Mangel an korrekter Terminologie viel schwieriger, die benötigten Ressourcen zu finden)?Wie können Sie Sitzungscookies zwischen Internet Explorer und ActiveX-Komponenten teilen, die auf einer Webseite gehostet werden?

Mein Ziel ist es, die Anforderungen meiner Anwendung aus den Anforderungen der Anforderungen des Host-Browsers gleich aussehen zu lassen, und ich dachte, dass das Einbetten der Anwendung als ActiveX-Steuerelement in den Browser die einzige Möglichkeit ist, dies zu erreichen auf einem anderen zu tun ist dies willkommen.

Antwort

2

Eine Möglichkeit, dies zu erreichen, ist, dass die ActiveX-Komponente die Internet Explorer-Komponente (WebBrowser-Objekt) einbetten und damit meine HTTP-Anfragen anstelle von Standard-Klassenobjekten ausführen kann. Auf diese Weise werden Sitzungscookies (auch nur für HTTP), die in Internet Explorer festgelegt wurden, für den integrierten Internet Explorer verfügbar und werden automatisch mit jeder Anforderung gesendet.

+0

es funktioniert! Vielen Dank! – jerem

0

Ich weiß nicht wirklich viel über .NET, IIS oder ActiveX, aber wäre es möglich, die Cookies an die eingebettete Anwendung zu übergeben? Javascript hat document.cookie, das alle Cookies für die aktuelle Domäne enthalten sollte (die für die aktuelle Seitenanforderung gesendeten). Es ist wahrscheinlich möglich, dass dieser Wert irgendwie an Ihre eingebettete Anwendung weitergegeben wird.

Entschuldigung für die vage Antwort. Ich hoffe, es kann dich wenigstens in eine neue Richtung weisen.

+1

Leider ist dies nicht möglich: Der Cookie ist ein HTTP-only-Cookie und kann daher nicht vom Client-Code aufgerufen werden. – jerem

+0

Nun, tut mir leid, dass ich überhaupt keine Hilfe bekommen habe = D – Chibu

Verwandte Themen