使用 Oracle 資料庫配接器保護程式設計
如何使用新增配接器服務參考 Visual Studio 外掛程式來保護認證?
當您使用 [新增配接器服務參考外掛程式] 來建立 WCF 用戶端時,您必須提供 Oracle 資料庫的使用者名稱和密碼。 您只應該從 [設定配接器] 對話方塊的 [安全性] 索引標籤執行此動作。 從 [ 安全性 ] 索引標籤輸入 Oracle 認證,而不是直接輸入 [ 設定 URI ] 欄位,即可確定下列事項:
認證將不會顯示在 [新增配接器服務參考外掛程式] 對話方塊的 [URI ] 欄位中,任何有權存取電腦畫面的人員都可以讀取認證。
認證不會出現在 [新增配接器服務參考外掛程式] 產生的組態檔中。
如需如何使用新增配接器服務參考外掛程式產生 WCF 用戶端的詳細資訊,包括如何輸入 Oracle 資料庫的使用者名稱和密碼,請參閱 在 Visual Studio 中取得 Oracle Database 作業的中繼資料。
在程式碼中設定認證的最佳作法為何?
WCF 提供 ClientCredentials 類別,協助您設定用戶端通訊物件,例如 ChannelFactory用來向服務驗證本身的認證。 藉由使用 ClientCredentials 類別,您可以確定 WCF 會採用該物件通道堆疊中指定的任何驗證機制,並將其套用至用戶端與服務之間的交換。
因為 Oracle 資料庫配接器是與其取用的應用程式一起裝載,所以使用 ClientCredentials 類別在取用應用程式的用戶端通訊物件上設定認證並不必要。 不過,最好是這麼做。
Oracle 資料庫配接器鼓勵使用 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。