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 に対して可能な認証サービスの一覧を提供する必要があります。 pAuthInfoNULL の場合、Snego はコンピューターにインストールされているセキュリティ パッケージから認証サービスの一覧を作成します。 次に、Snego は認証サービスのリストをサーバーに送信し、そのリストをサーバーで利用可能な認証サービスと比較し、接続に使用する認証サービスを選択します。

Note

Schannel を Snego が使用する認証サービスの一覧に含めることはできません。

 

クライアントは、CoInitializeSecurity を呼び出すときに Snego を指定することもできます。 CoSetProxyBlanketdwAuthnSvc パラメーターと pAuthInfo パラメーターは、pAuthList パラメーターを介して CoInitializeSecurity に渡される SOLE_AUTHENTICATION_INFO 構造体のメンバーになります。 これらのメンバーの値の詳細は、前項で説明したものと同じです。

Snego が使用されている場合、CoQueryProxyBlanket または CoQueryClientBlanket の呼び出しは、Snego が接続を確立するために選択した実際の認証サービスではなく、認証サービスとして Snego を返します。

COM およびセキュリティ パッケージ