安全使用 SQL 配接器進行程式設計
如何使用新增配接器服務參考 Visual Studio 外掛程式來保護認證?
當您使用 [新增配接器服務參考外掛程式] 來建立 WCF 用戶端時,您可能必須提供SQL Server資料庫的使用者名稱和密碼。 您必須從 [設定配接器] 對話方塊的 [安全性] 索引標籤輸入認證。 SQL 配接器不提供選項,以將使用者名稱和密碼指定為連線 URI 的一部分。 這可確保下列各項:
認證將不會顯示在 [新增配接器服務參考外掛程式] 對話方塊的 [設定URI] 欄位中,任何可存取您電腦畫面的人員都可以讀取認證。
認證不會出現在新增配接器服務參考外掛程式產生的組態檔中。
如需如何使用新增配接器服務參考外掛程式產生 WCF 用戶端的詳細資訊,包括如何輸入SQL Server資料庫的使用者名稱和密碼,請參閱使用 SQL 配接器取得Visual Studio 中SQL Server作業的中繼資料。
在程式碼中設定認證的最佳作法為何?
WCF 提供 ClientCredentials 類別,協助您設定用戶端通訊物件,例如 ChannelFactory用來向服務驗證本身的認證。 藉由使用 ClientCredentials 類別,您可以確定 WCF 會採用該物件通道堆疊中指定的任何驗證機制,並將其套用至用戶端與服務之間的交換。
因為 SQL 配接器是以其取用的應用程式裝載于同進程,所以使用 ClientCredentials 類別來設定取用應用程式所使用的用戶端通訊物件認證並不必要。 不過,它被視為良好作法。
SQL 配接器需要使用 ClientCredentials 類別,以程式設計方式傳遞認證。 SQL 配接器會忽略 AcceptCredentialsInUri 系結屬性,以防止在 URI 中傳遞認證。
下列範例示範如何使用Credentials屬性,在ChannelFactory上設定SQL Server資料庫的認證。
// Create binding and endpoint
SqlAdapterBinding binding = new SqlAdapterBinding();
EndpointAddress address = new EndpointAddress("mssql://mysqlserver//mydatabase?");
// Create the channel factory
ChannelFactory<IRequestChannel> factory = new ChannelFactory<IRequestChannel>(binding, endpointAddress))
// Set user name and password
factory.Credentials.UserName.UserName = "myuser";
factory.Credentials.UserName.Password = "mypassword";
// Open the channel factory
factory.Open();
下列範例示範如何使用ClientCredentials類別,在 WCF 用戶端上設定SQL Server資料庫的認證。
// Initialize a new client for the SELECT operation on the Employee table
SqlAdapterBinding binding = new SqlAdapterBinding();
EndpointAddress address = new EndpointAddress("mssql://mysqlserver//mydatabase?");
TableOp_dbo_EmployeeClient client = new TableOp_dbo_EmployeeClient(binding,address);
// Set user name and password
client.ClientCredentials.UserName.UserName = "myuser";
client.ClientCredentials.UserName.Password = "mypassword";
// Open the client
client.Open();
如何跨進程界限提供更安全的資料交換?
SQL 配接器會與取用 SQL 配接器的應用程式或服務一起裝載。 因為配接器是與取用者一起裝載的,所以不需要在取用者與 SQL 配接器之間交換的訊息上提供安全性。 不過,如果取用的應用程式或服務將包含敏感性資料庫資訊的訊息跨進程界限傳送給另一個服務或用戶端,您應該採取措施,為環境中的此資料提供適當的保護。 Windows Communication Foundation (WCF) 提供許多選項,可協助保護用戶端和服務之間傳送的訊息。 如需協助保護 WCF 中用戶端與服務之間傳送之訊息的詳細資訊,請參閱 保護服務和用戶端。 如需 WCF 提供的安全性功能的詳細資訊,請參閱 Windows Communication Foundation 安全性。