セキュリティ サービス プロバイダー
セキュリティ サービス プロバイダー インターフェイス (SSPI) は、セキュリティで保護された分散アプリケーション用の業界標準のユニバーサル インターフェイスを提供します。 Peer Graphing API は、SSPI インターフェイスを実装する DLL であるセキュリティ サービス プロバイダー (SSP) を指定することで、アプリケーションがグラフ内のリンクをセキュリティで保護する方法を提供します。 アプリケーションでは、PeerGraphCreateを使用してグラフを作成するときに SSP を指定します。
独自の SSP の作成の詳細については、「Graphing Reference Links」の一覧の SSPI ドキュメント リンクを参照してください。
SSP を実装するためのプログラミングに関する考慮事項
SSP 内からアプリケーションを呼び出す場合は注意が必要です。 SSP コールバックには、次の考慮事項が適用されます。
- コールバックは接続ネゴシエーション中に呼び出されるため、コールバックが返されるまでに長い時間はかかりません。 接続が確立されるまでに時間がかかりすぎる場合は、接続を削除できます。
- Peer Graphing API は、システムの実際の負荷に基づいて、接続タイムアウト値を動的に調整します。 最も低いタイムアウト値は 20 秒です。
- デッドロックの可能性を回避するために、アプリケーションはコールバックからピア グラフ データベースにアクセスしないようにする必要があります。 アプリケーションでグラフ データベースからの情報が必要な場合、アプリケーションは必要な情報をキャッシュし、コールバック内からキャッシュを参照できます。 キャッシュは、接続時間の短縮にも役立ちます。
SSPI エントリ ポイントを呼び出すとき、ピア グラフ インフラストラクチャには、5 つの関数の特定のパラメーターに対して特定の値が必要です。 SSP に提供されるこれらのパラメーター値を変更することはできません。また、SSP は 5 つのパラメーターの値を無視するか、適切に処理することができます。 次の一覧では、これらの特定のパラメーターと必要な値を示します。
-
pvGetKeyArgument パラメーターに 1 つを指定します。 pszPrincipal、pvLogonID、および pGetKeyFn パラメーター 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.
-
fQOP および MessageSeqNo パラメーターにはゼロ (0) を指定します。
DecryptMessageの
MessageSeqNo パラメーターにはゼロ (0) を指定し、pfQOP パラメーターには NULL を します。
EncryptMessage呼び出すと、SecBufferDesc 構造体に 4 つのバッファーが渡されます。 次の表は、バッファーを渡す順序を示しています。
SSP 固有の構造体 | 形容 |
---|---|
SECBUFFER_STREAM_HEADER | セキュリティ ヘッダー データを格納します。 ヘッダー バッファーのサイズは、QueryContextAttributes を呼び出し、SECPKG_ATTR_STREAM_SIZES 属性を指定することによって取得されます。 |
SECBUFFER_DATA | 暗号化するプレーンテキスト メッセージが含まれます。 |
SECBUFFER_STREAM_TRAILER | セキュリティ トレーラー データを格納します。 ヘッダー バッファーのサイズは、QueryContextAttributes を呼び出し、SECPKG_ATTR_STREAM_SIZES 属性を指定することによって取得されます。 |
SECBUFFER_EMPTY | 初期化されていません。 このバッファーのサイズは 0 です。 |
DecryptMessage呼び出すと、Peer Graphing API は SecBuffer 構造体 厳密に 4 つ渡します。 最初のバッファーは SECBUFFER_DATAされ、暗号化されたメッセージが含まれています。 残りのバッファーは出力に使用され、SECBUFFER_EMPTY型です。
SSP では、1 回の呼び出しで 16K 以上のサイズのユーザー データ バッファーの暗号化と復号化をサポートする必要があります。