共用方式為


使用 Oracle 資料庫配接器保護程序設計

如何在使用 Visual Studio 插ty「Add Adapter Service Reference」時保護認證?

當您使用新增配接器服務參考外掛程式來建立 WCF 用戶端時,您必須提供 Oracle 資料庫的使用者名稱和密碼。 您只能從 [設定配接] 對話框的 [安全性] 索引標籤執行此動作。 從 [ 安全性 ] 索引標籤輸入 Oracle 認證,而不是直接輸入 [ 設定 URI] 欄位,即可確定下列各項:

  • 認證將不會顯示在 [新增配接器服務參考外掛程式] 對話方塊的 [URI ] 欄位中,任何有權存取電腦畫面的人都可以讀取認證。

  • 認證不會出現在新增配接器服務參考外掛程式產生的組態檔中。

    如需如何使用新增配接器服務參考外掛程式來產生 WCF 用戶端的詳細資訊,包括如何輸入 Oracle 資料庫的使用者名稱和密碼,請參閱 在 Visual Studio 中取得 Oracle 資料庫作業的元數據

在程式代碼中設定認證的最佳作法為何?

WCF 提供 ClientCredentials 類別,協助您設定用戶端通訊物件,例如 ChannelFactory 用來向服務驗證本身的認證。 藉由使用 ClientCredentials 類別,您可確保 WCF 會採用該物件通道堆疊中指定的任何驗證機制,並將其套用至用戶端與服務之間的交換。

因為 Oracle Database 配接器與其取用的應用程式位於同一進程內,因此不必使用 ClientCredentials 類別在取用應用程式所使用的用戶端通訊物件上設定憑證。 然而,認為這樣做是很好的做法。

Oracle Database 配接器鼓勵使用 ClientCredentials 類別。 這個屬性會指定配接器是否會在連線 URI 中接受 Oracle 資料庫的使用者名稱和密碼。 AcceptCredentialsInUri 預設為 false,這表示如果連接 URI 包含認證,配接器將會擲回例外狀況。 您可以將 AcceptCredentialsInUri 設定為 true ,以提供連線 URI 中的認證。

下列範例示範如何使用 Credentials 屬性,在 ChannelFactory 上設定 Oracle 資料庫的認證。

// Create binding and endpoint  
OracleDBBinding binding = new OracleDBBinding();  
EndpointAddress endpointAddress = new EndpointAddress("oracleDB://Adapter");  
  
// Create the channel factory   
ChannelFactory<IRequestChannel> factory = new ChannelFactory<IRequestChannel>(binding, endpointAddress))  
  
// Set user name and password  
factory.Credentials.UserName.UserName = "SCOTT";  
factory.Credentials.UserName.Password = "TIGER";  
  
// Open the channel factory  
factory.Open();  

下列範例示範如何使用 ClientCredentials 類別,在 WCF 用戶端上設定 Oracle 資料庫的認證。

// Initialize a new client for the SQLEXECUTE operation from configuration   
SQLEXECUTEClient sqlExecuteClient = new SQLEXECUTEClient("OracleDBBinding_SQLEXECUTE");  
  
// Set user name and password  
sqlExecuteClient.ClientCredentials.UserName.UserName = "SCOTT";  
sqlExecuteClient.ClientCredentials.UserName.Password = "TIGER";  
  
// Open the client  
sqlExecuteClient.Open();  

如何跨進程界限提供更安全的數據交換?

Oracle 資料庫配接器會與取用它的應用程式或服務一起裝載於同進程。 由於配接器是與取用者同進程裝載,因此不需要在取用者與 Oracle 資料庫配接器之間交換的訊息上提供安全性。 不過,如果取用的應用程式或服務將包含敏感性資料庫資訊的訊息跨進程界限傳送給另一個服務或用戶端,您應該採取措施,為環境中的此數據提供適當的保護。 Windows Communication Foundation (WCF) 提供許多選項,可協助保護用戶端與服務之間傳送的訊息。 如需協助保護 WCF 中用戶端與服務之間傳送之訊息的詳細資訊,請參閱 保護服務和用戶端。 如需 WCF 提供之安全性功能的詳細資訊,請參閱 Windows Communication Foundation Security

另請參閱

保護您的 Oracle 資料庫應用程式
最佳做法