Snego
認証サービス識別子がRPC_C_AUTHN_GSS_NEGOTIATEされている Snego は、実際には認証サービス自体を提供しません。 代わりに、認証サービスの一覧を取得し、クライアントとサーバーの間で動作するサービスをネゴシエートします。 認証パラメーターは Snego では使用されませんが、実際の認証を行う選択した認証サービスに渡されます。 Snego は 1998 年 12 月、RFC 2478 のドキュメントインターネット エンジニアリング タスク フォース (IETF) によって標準化されました。
Snego は、リモート コンピューターが提供できる認証サービスがわからない場合に便利です。
Snego を使用するには、クライアントとサーバーの両方で認証サービスとして Snego を指定する必要があります。 サーバーは、CoInitializeSecurityに渡される asAuthSvc 配列パラメーター内のいずれかの SOLE_AUTHENTICATION_SERVICE 構造体の dwAuthnSvc メンバーとしてRPC_C_AUTHN_GSS_NEGOTIATEを指定します。 クライアントは、CoSetProxyBlanket呼び出し、dwAuthnSvc パラメーターとしてRPC_C_AUTHN_GSS_NEGOTIATEを渡すことによって、Snego を指定できます。 また、クライアントは、CoSetProxyBlanket の呼び出しで pAuthInfo パラメーターに渡される SEC_WINNT_AUTH_IDENTITY_EX 構造体の PackageList メンバーを介して、Snego に対して可能な認証サービスの一覧を提供する必要があります。 pAuthInfo が NULL 場合、Snego はコンピューターにインストールされているセキュリティ パッケージから認証サービスの一覧を作成します。 次に、Snego は認証サービスの一覧をサーバーに送信し、その一覧をサーバーの使用可能な認証サービスと比較し、接続に使用する認証サービスを選択します。
手記
Schannel を Snego が使用する認証サービスの一覧に含めることはできません。
クライアントは、CoInitializeSecurity呼び出すときに Snego を指定することもできます。 coSetProxyBlanketの dwAuthnSvc およびpAuthInfo パラメーターは、pAuthList パラメーターを介して CoInitializeSecurity に渡される SOLE_AUTHENTICATION_INFO 構造体のメンバーになります。 これらのメンバーの値の詳細は、前の段落で説明したものと同じです。
Snego が使用されている場合、CoQueryProxyBlanket呼び出しまたは CoQueryClientBlanketは、接続を確立するために Snego が選択した実際の認証サービスではなく、認証サービスとして Snego を返します。
関連トピック