2010-03-15 10 views
5

Tôi hiện đang làm việc trên ứng dụng .Net làm cho các yêu cầu HTTP đến một số ứng dụng web được lưu trữ trên máy chủ IIS. Ứng dụng được triển khai thông qua ClickOnce và hoạt động tốt trên các kiến ​​trúc mạng đơn giản.
Một trong những khách hàng của chúng tôi có một mạng rất phức tạp liên quan đến máy chủ xác thực tùy chỉnh mà trước tiên người dùng đăng nhập để được xác thực và truy cập vào các ứng dụng khác trên mạng này. Sau khi được xác thực trên máy chủ này, cookie phiên được tạo và gửi cho người dùng. Mỗi khi người dùng thực hiện yêu cầu trên máy chủ được bảo mật của mạng, cookie này được chọn để cấp quyền truy cập cho người dùng. Nếu cookie này không được gửi cùng với yêu cầu, người dùng sẽ được chuyển hướng đến trang đăng nhập. Trình duyệt duy nhất được sử dụng là Internet Explorer.
Không thể truy cập cookie này từ ứng dụng .net của chúng tôi vì nó được thực hiện trong quy trình khác so với quy trình Internet Explorer được sử dụng để đăng nhập người dùng và do đó không được gửi cùng với yêu cầu của chúng tôi. mọi yêu cầu của chúng tôi đối với trang đăng nhập.
Tôi đã xem xét nhúng ứng dụng của mình vào Internet Explorer bằng cách hiển thị điều khiển chính COM và tạo nó trên trang HTML có thẻ. Nó hoạt động đúng cách, tuy nhiên các phiên cookie được đặt trước đó trong trình duyệt sẽ không được gửi khi điều khiển ActiveX thực hiện các yêu cầu web.
Tôi đã hy vọng việc chia sẻ thông tin phiên này sẽ tự động (mặc dù tôi không thực sự tin điều đó). Vì vậy, câu hỏi của tôi là: Có thể truy cập vào cookie này trong ActiveX được nhúng không? Làm sao? Nó có tạo sự khác biệt khi sử dụng thành phần COM-interop .Net thay vì điều khiển ActiveX "đúng" không? Ngoài ra, có những từ bảo mật cụ thể để mô tả loại hành vi này (với điều kiện tôi không phải là chuyên gia về chủ đề bảo mật, việc thiếu thuật ngữ thích hợp này khiến việc tìm kiếm các tài nguyên cần thiết trở nên khó khăn hơn)?Cách chia sẻ cookie phiên giữa Internet Explorer và các thành phần ActiveX được lưu trữ trong một trang web?

Mục tiêu của tôi là yêu cầu của ứng dụng trông giống như yêu cầu của trình duyệt máy chủ và tôi cho rằng việc nhúng ứng dụng dưới dạng điều khiển ActiveX vào trình duyệt là cách duy nhất để đạt được điều này. người khác làm điều này được hoan nghênh.

Trả lời

2

Cách tôi tìm thấy để đạt được điều này là để thành phần ActiveX nhúng thành phần Internet Explorer (đối tượng WebBrowser) và sử dụng nó để thực hiện các yêu cầu http của tôi thay vì các đối tượng lớp chuẩn. Bằng cách này, các cookie phiên (ngay cả những cookie chỉ http) được đặt trong Internet Explorer sẽ có sẵn cho Internet Explorer được nhúng và được tự động gửi cùng với từng yêu cầu.

+0

nó hoạt động! cảm ơn! – jerem

0

Tôi thực sự không biết nhiều về .NET, IIS hoặc ActiveX, nhưng có thể chuyển cookie vào ứng dụng được nhúng không? Javascript có document.cookie chứa tất cả các cookie cho tên miền hiện tại (những cái được gửi cho yêu cầu trang hiện tại). Có thể có giá trị này được truyền cho ứng dụng nhúng của bạn bằng cách nào đó.

Xin lỗi vì câu trả lời mơ hồ. Tôi hy vọng nó có thể ít nhất là điểm bạn theo một hướng mới.

+1

Thật không may điều này là không thể: cookie là một cookie chỉ http và do đó không thể được truy cập bằng mã khách hàng. – jerem

+0

Vâng, xin lỗi vì đã không trợ giúp gì hết rồi = D – Chibu