共用方式為


安全性服務提供者

安全性服務提供者介面 (SSPI) 為安全的分散式應用程式提供通用的業界標準介面。 對等圖形 API 可讓您的應用程式藉由指定安全性服務提供者 (SSP) 來保護圖形中的連結,這是實作 SSPI 介面的 DLL。 應用程式使用 PeerGraphCreate建立圖形時,指定 SSP。

如需建立您自己的 SSP 的詳細資訊,請參閱圖表參考連結清單中 SSPI 檔案連結

實作 SSP 的程式設計考慮

從 SSP 內呼叫應用程式時請小心。 下列考慮適用於 SSP 回呼:

  • 回呼應該不需要很長的時間才能傳回,因為它們會在連接交涉期間呼叫。 如果建立連接所需的時間太長,則可以卸除連線。
  • 對等圖形 API 會根據系統的實際負載,動態調整連線逾時值。 最低逾時值為20秒。
  • 為了避免潛在的死結情況,應用程式不得從回呼存取對等圖形資料庫。 如果應用程式需要圖形資料庫中的資訊,應用程式可以快取必要的資訊,然後從回呼內參考快取。 快取也可協助減少連線時間。

呼叫 SSPI 進入點時,對等圖形基礎結構需要五個 (5) 函式特定參數的特定值。 您無法變更提供給 SSP 的這些參數值,而 SSP 可以忽略五個參數的值,或正常處理這些值。 下列清單會識別這些特定參數和必要值:

  • AcquireCredentialsHandle

    pvGetKeyArgument 參數指定一個 (1)。 指定 pszPrincipalpvLogonIDpGetKeyFn 參數 NULL

  • InitializeSecurityContext

    fContextReq 參數指定下列旗標:ISC_REQ_MUTUAL_AUTH |ISC_REQ_CONFIDENTIALITY |ISC_REQ_INTEGRITY |ISC_REQ_SEQUENCE_DETECT |ISC_REQ_STREAM |ISC_REQ_ALLOCATE_MEMORY

  • AcceptSecurityContext

    fContextReq 參數指定下列旗標:ASC_REQ_MUTUAL_AUTH |ASC_REQ_CONFIDENTIALITY |ASC_REQ_INTEGRITY |ASC_REQ_SEQUENCE_DETECT |ASC_REQ_STREAM |ASC_REQ_ALLOCATE_MEMORY

  • EncryptMessage

    fQOPMessageSeqNo 參數指定零 (0)。

  • DecryptMessage

    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 且更大的用戶數據緩衝區。