安全性服務提供者
安全性服務提供者介面 (SSPI) 為安全的分散式應用程式提供通用的業界標準介面。 對等圖形 API 可讓您的應用程式藉由指定安全性服務提供者 (SSP) 來保護圖形中的連結,這是實作 SSPI 介面的 DLL。 應用程式使用 PeerGraphCreate建立圖形時,指定 SSP。
如需建立您自己的 SSP 的詳細資訊,請參閱圖表參考連結清單中 SSPI 檔案連結。
實作 SSP 的程式設計考慮
從 SSP 內呼叫應用程式時請小心。 下列考慮適用於 SSP 回呼:
- 回呼應該不需要很長的時間才能傳回,因為它們會在連接交涉期間呼叫。 如果建立連接所需的時間太長,則可以卸除連線。
- 對等圖形 API 會根據系統的實際負載,動態調整連線逾時值。 最低逾時值為20秒。
- 為了避免潛在的死結情況,應用程式不得從回呼存取對等圖形資料庫。 如果應用程式需要圖形資料庫中的資訊,應用程式可以快取必要的資訊,然後從回呼內參考快取。 快取也可協助減少連線時間。
呼叫 SSPI 進入點時,對等圖形基礎結構需要五個 (5) 函式特定參數的特定值。 您無法變更提供給 SSP 的這些參數值,而 SSP 可以忽略五個參數的值,或正常處理這些值。 下列清單會識別這些特定參數和必要值:
-
為 pvGetKeyArgument 參數指定一個 (1)。 指定 pszPrincipal、pvLogonID和 pGetKeyFn 參數 NULL。
-
為 fContextReq 參數指定下列旗標:ISC_REQ_MUTUAL_AUTH |ISC_REQ_CONFIDENTIALITY |ISC_REQ_INTEGRITY |ISC_REQ_SEQUENCE_DETECT |ISC_REQ_STREAM |ISC_REQ_ALLOCATE_MEMORY。
-
為 fContextReq 參數指定下列旗標:ASC_REQ_MUTUAL_AUTH |ASC_REQ_CONFIDENTIALITY |ASC_REQ_INTEGRITY |ASC_REQ_SEQUENCE_DETECT |ASC_REQ_STREAM |ASC_REQ_ALLOCATE_MEMORY。
-
為 fQOP 和 MessageSeqNo 參數指定零 (0)。
-
為 MessageSeqNo 參數指定零 (0),並為 pfQOP 參數指定 NULL。
呼叫 EncryptMessage時,會傳入 SecBufferDesc 結構中的四個緩衝區。 下表會識別傳遞緩衝區的順序。
SSP 特定結構 | 描述 |
---|---|
SECBUFFER_STREAM_HEADER | 包含安全性標頭數據。 標頭緩衝區的大小是藉由呼叫 QueryContextAttributes 並指定 SECPKG_ATTR_STREAM_SIZES 屬性來取得。 |
SECBUFFER_DATA | 包含要加密的純文字訊息。 |
SECBUFFER_STREAM_TRAILER | 包含安全性預告片數據。 標頭緩衝區的大小是藉由呼叫 QueryContextAttributes 並指定 SECPKG_ATTR_STREAM_SIZES 屬性來取得。 |
SECBUFFER_EMPTY | 未初始化。 這個緩衝區的大小為零 (0)。 |
呼叫 DecryptMessage時,對等圖形 API 會傳遞 4 個 SecBuffer 結構。 第一個緩衝區是 SECBUFFER_DATA,且包含加密的訊息。 其餘的緩衝區會用於輸出,且類型為 SECBUFFER_EMPTY。
SSP 需要支援在一次呼叫中加密和解密大小為 16K 且更大的用戶數據緩衝區。