2010-03-15 12 views
5

Şu anda bir IIS sunucusunda barındırılan bazı web uygulamalarına HTTP istekleri yapan bir .NET uygulaması üzerinde çalışıyorum. Uygulama ClickOnce aracılığıyla dağıtılmıştır ve basit ağ mimarileri üzerinde çalışıyor.
Müşterilerimizden biri, kullanıcının kimlik doğrulaması için önce oturum açtığı ve bu ağdaki diğer uygulamalara erişebildiği özel bir kimlik doğrulama sunucusu içeren çok karmaşık bir ağa sahiptir. Bu sunucuda doğrulandıktan sonra, bir oturum çerezi oluşturulur ve kullanıcıya gönderilir. Kullanıcı daha sonra ağın güvenli bir sunucusuna bir istekte bulunduğunda, bu çerez kullanıcıya erişim izni vermek üzere kontrol edilir. Bu çerez istekle birlikte gönderilmezse, kullanıcı giriş sayfasına yönlendirilir. Kullanılan tek tarayıcı Internet Explorer'dır.
Bu çerezi .net uygulamasından erişilemez çünkü Internet Explorer işleminden başka bir işlemde yürütüldüğü için kullanıcı oturum açmak için kullanılır ve bu nedenle sunucu yeniden yönlendirildikten sonra tamamlanamayan isteklerle birlikte gönderilmez. Giriş sayfamızdaki her isteğimiz.
Uygulamamı Internet Explorer'a gömdüm ve ana denetimin COM'u görünür yapıp bir HTML sayfasındaki bir etiketle oluşturmasını sağladım. Düzgün çalışıyor, ancak ActiveX denetimi web istekleri yaptığında tarayıcıda daha önce ayarlanmış oturum çerezleri gönderilmez.
Oturum bilgilerinin otomatik olarak paylaşılacağını umuyordum (buna gerçekten inanmasam da). Bu yüzden benim sorularım: Bu çereze katıştırılmış ActiveX'te erişim mümkün mü? Nasıl? Bir "gerçek" ActiveX denetimi yerine bir .Net COM birlikte çalışma bileşeni kullanmak için bir fark yaratır mı? Ayrıca, bu tür davranışları tanımlamak için belirli güvenlik sözleri var mı (güvenlik konuları konusunda uzman olmadığım göz önüne alındığında, bu uygun terminoloji eksikliği, gerekli kaynakları bulmayı çok daha zorlaştırıyor)?Oturum çerezlerini Internet Explorer ve bir web sayfasında barındırılan ActiveX bileşenleri arasında nasıl paylaşılır?

Amacım, uygulamamın isteklerinin ana bilgisayar tarayıcısının istekleri tarafından yapılan isteklerle aynı olmasını sağlamaktır ve uygulamayı bir ActiveX denetimi olarak tarayıcının içine yerleştirmenin, bunu başarmanın tek yolu olduğunu düşünmekteyim, ancak herhangi bir öneri Bunu yapmak için bir başka hoş geldiniz.

cevap

2

Bunu başarmak için bulduğum bir yöntem, Internet Explorer bileşenini (WebBrowser nesnesi) içeren ActiveX bileşenine sahip olmak ve standart sınıf nesneler yerine http istekleri yapmak için kullanmaktır. Bunu yaparak, Internet Explorer'da ayarlanmış olan oturum çerezleri (hatta http-only olanlar) gömülü Internet Explorer için kullanılabilir hale gelir ve her istek ile otomatik olarak gönderilir.

+0

işe yarıyor! Teşekkürler! – jerem

0

.NET, IIS veya ActiveX hakkında pek bir şey bilmiyorum, ancak cookie'leri gömülü uygulamaya geçirmek mümkün mü? Javascript, geçerli alan adı için (mevcut sayfa isteği için gönderilenler) tüm çerezleri içermesi gereken document.cookie'ye sahiptir. Bu değerin, bir şekilde gömülü uygulamanıza geçirilmiş olması olasıdır.

Belirsiz cevap için özür dilerim. Umarım en azından sizi yeni bir yöne yönlendirebilir.

+1

Maalesef bu mümkün değil: çerez yalnızca bir çerezdir ve bu nedenle istemci koduyla erişilemez. – jerem

+0

Eh, yardım etmediğim için üzgünüm o zaman = D – Chibu

İlgili konular