天天看點

.NET Remoting安全性NET架構下注意.NET Remoting安全性

NET架構下注意.NET Remoting安全性

  體系結構

  圖 1 顯示在 ASP.NET 中駐留遠端對象時的基本 .NET Remoting 體系結構。如果主要關心安全性問題,那麼建議使用 ASP.NET 主機和 HTTP通道進行通信,因為它允許遠端對象利用 ASP.NET和 IIS 提供的基本安全服務。

  有關可能使用的主機和通道類型範圍的詳細資訊以及比較資訊,請參見本章後面的“選擇一個主機程序” 。

  

.NET Remoting安全性NET架構下注意.NET Remoting安全性

  圖 1. .NET Remoting 體系結構

  用戶端與程序内的代理對象進行通信。可以通過遠端對象代理設定身份驗證憑證(例如,使用者名、密碼和證書等等)。方法調用通過接收鍊進行傳遞(您可以實作自己的自定義接收來執行資料加密),并到達負責通過網絡發送資料的傳輸接收。在伺服器端,調用通過相同的管道進行傳遞,并向對象發出調用。

  注 本章中使用的術語“代理” 一詞是指用戶端程序内的代理對象,用戶端通過該對象與遠端對象進行通信。不要将它與術語“代理伺服器”混淆。

  Remoting 接收

  當用戶端在遠端對象上進行方法調用時,.NET Remoting 使用傳輸通道接收、自定義通道接收和格式化程式通道接收。

  傳輸通道接收

  傳輸通道接收通過網絡在用戶端與伺服器之間傳遞方法調用。.NET提供了 HttpChannel 和 TcpChannel 類,但是,可以對體系結構進行完全擴充,并且插入您自己的自定義實作方法。

  ◆ HttpChannel。在将遠端對象駐留在 ASP.NET 中時,可以使用此通道。此通道使用 HTTP 協定在用戶端和伺服器之間發送消息。

  ◆ TcpChannel。在将遠端對象駐留在 Microsoft? Windows? 作業系統服務或其他可執行檔案中時,可以使用此通道。此通道使用 TCP 套接字在用戶端和伺服器之間發送消息。

  ◆ 自定義通道 。自定義的傳輸通道可以使用任何基本的傳輸協定在用戶端和伺服器之間發送消息。例如,自定義通道可以使用命名管道或郵件槽。

  比較傳輸通道接收

  下表對兩個主要的傳輸通道接收進行了比較。

  

.NET Remoting安全性NET架構下注意.NET Remoting安全性

  自定義接收

  可以在通道接收管道内的不同位置上使用自定義通道接收來修改在用戶端和伺服器之間發送的消息。提供加密和解密功能的通道接收就是一個自定義通道接收的示例。

  格式化程式接收

  格式化程式接收擷取方法調用,并将它們序列化為可通過網絡發送的流。.NET 提供兩種格式化程式接收:

  ◆二進制格式化程式。它使用 BinaryFormatter 類将方法調用打包為一個序列化的二進制流,然後傳遞該流(使用 HTTP POST)以便向伺服器發送資料。二進制格式化程式将 HTTP 請求中的内容類型設定為“application/octet-stream”。

  與 SOAP 格式化程式相比,二進制格式化程式可以提供更高的性能。

  ◆SOAP 格式化程式.它使用 SoapFormatter 類将方法調用打包為 SOAP 消息。在HTTP 請求中将内容類型設定為“text/xml”,并使用 HTTP POST 将其傳遞到伺服器。