使用 SAP 配接器保護程式設計
如何使用新增配接器服務參考 Visual Studio 外掛程式來保護認證?
當您使用 [新增配接器服務參考外掛程式] 來建立 WCF 用戶端時,您必須提供 SAP 系統的使用者名稱和密碼。 您只應該從 [設定配接器] 對話方塊的 [安全性] 索引標籤執行此動作。 從 [ 安全性 ] 索引標籤輸入 SAP 認證,而不是直接進入 [URI ] 欄位,即可確定下列事項:
認證將不會顯示在 [新增配接器服務參考外掛程式] 對話方塊的 [URI ] 欄位中,任何有權存取電腦畫面的人員都可以讀取認證。
認證不會出現在 [新增配接器服務參考外掛程式] 產生的組態檔中。
如需如何使用新增配接器服務參考外掛程式來產生 WCF 用戶端的詳細資訊,包括如何輸入 SAP 系統的使用者名稱和密碼,請參閱 在 Visual Studio 中取得 SAP 作業的中繼資料
在程式碼中設定認證的最佳作法為何?
WCF 提供 ClientCredentials 類別,協助您設定用戶端通訊物件,例如 ChannelFactory用來向服務驗證本身的認證。 藉由使用 ClientCredentials 類別,您可以確定 WCF 會採用該物件通道堆疊中指定的任何驗證機制,並將其套用至用戶端與服務之間的交換。
由於 SAP 配接器會與其取用的應用程式一起裝載于同進程,因此使用 ClientCredentials 類別在取用應用程式的用戶端通訊物件上設定認證並不必要。 不過,最好是這麼做。
SAP 配接器鼓勵透過AcceptCredentialsInUri系結屬性使用ClientCredentials類別。 此屬性會指定配接器是否會在連線 URI 中接受 SAP 系統的使用者名稱和密碼。 AcceptCredentialsInUri 預設為 false,這表示如果連線 URI 包含認證,配接器將會擲回例外狀況。 您可以將 AcceptCredentialsInUri 設定為 true ,以在連線 URI 中提供認證。 事實上,在某些情況下,您必須這麼做;例如,當您在輸入案例中指定服務主機端點或 IReplyChannel 的連線 URI 時。
下列範例示範如何使用 ClientCredentials 類別,在 WCF 用戶端上設定 SAP 系統的認證。
SAPBinding binding = new SAPBinding();
// Set endpoint address
EndpointAddress endpointAddress = new EndpointAddress("sap://CLIENT=800;LANG=EN;@a/YourSAPHost/00?RfcSdkTrace=False&AbapDebug=False&UseSapGui=Without");
// Create client and set credentials
RfcClient rfcClient = new RfcClient(binding, endpointAddress);
rfcClient.ClientCredentials.UserName.UserName = "YourUserName";
rfcClient.ClientCredentials.UserName.Password = "YourPassword";
如何跨進程界限提供更安全的資料交換?
SAP 配接器會與取用 SAP 配接器的應用程式或服務進行同進程裝載。 由於介面卡會與取用者同進程裝載,因此不需要在取用者與 SAP 配接器之間交換的訊息上提供安全性。 不過,如果取用的應用程式或服務將包含敏感性資料庫資訊的訊息跨進程界限傳送給另一個服務或用戶端,您應該採取措施,為環境中的此資料提供適當的保護。 Windows Communication Foundation (WCF) 提供許多選項,可協助保護用戶端和服務之間傳送的訊息。 如需協助保護 WCF 中用戶端和服務之間傳送之訊息的詳細資訊,請參閱 保護服務和用戶端。 如需 WCF 提供之安全性功能的一般資訊,請參閱 Windows Communication Foundation Security。