安全性服務提供者
安全性服務提供者介面 (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 特定結構 | Description |
---|---|
SECBUFFER_STREAM_HEADER | 包含安全性標頭資料。 標頭緩衝區的大小是藉由呼叫 QueryCoNtextAttributes 並指定 SECPKG_ATTR_STREAM_SIZES 屬性來取得。 |
SECBUFFER_DATA | 包含要加密的純文字訊息。 |
SECBUFFER_STREAM_TRAILER | 包含安全性預告片資料。 標頭緩衝區的大小是藉由呼叫 QueryCoNtextAttributes 並指定 SECPKG_ATTR_STREAM_SIZES 屬性來取得。 |
SECBUFFER_EMPTY | 未初始化。 這個緩衝區的大小為零, (0) 。 |
呼叫 DecryptMessage時,對等圖形 API 會完全傳遞四 個 SecBuffer 結構。 第一個緩衝區 SECBUFFER_DATA,並包含加密的訊息。 其餘緩衝區會用於輸出,且類型為 SECBUFFER_EMPTY。
SSP 需要支援在一次呼叫中加密和解密大小為 16K 和更新版本的使用者資料緩衝區。