CoSetProxyBlanket 関数 (combaseapi.h)

指定したプロキシで呼び出しを行うために使用する認証情報を設定します。 これは IClientSecurity::SetBlanket のヘルパー関数です。

構文

HRESULT CoSetProxyBlanket(
  [in]           IUnknown                 *pProxy,
  [in]           DWORD                    dwAuthnSvc,
  [in]           DWORD                    dwAuthzSvc,
  [in, optional] OLECHAR                  *pServerPrincName,
  [in]           DWORD                    dwAuthnLevel,
  [in]           DWORD                    dwImpLevel,
  [in, optional] RPC_AUTH_IDENTITY_HANDLE pAuthInfo,
  [in]           DWORD                    dwCapabilities
);

パラメーター

[in] pProxy

設定するプロキシ。

[in] dwAuthnSvc

使用する認証サービス。 使用可能な値の一覧については、「 認証サービス定数」を参照してください。 認証が必要ない場合は、RPC_C_AUTHN_NONEを使用します。 RPC_C_AUTHN_DEFAULTが指定されている場合、DCOM は通常のセキュリティ ブランケット ネゴシエーション アルゴリズムに従って認証サービスを選択します。

[in] dwAuthzSvc

使用する承認サービス。 使用可能な値の一覧については、「 承認定数」を参照してください。 RPC_C_AUTHZ_DEFAULTが指定されている場合、DCOM は通常のセキュリティ 一括ネゴシエーション アルゴリズムに従って承認サービスを選択します。 認証サービスとして NTLMSSP、Kerberos、または Schannel を使用する場合は、RPC_C_AUTHZ_NONEを承認サービスとして使用する必要があります。

[in, optional] pServerPrincName

認証サービスで使用するサーバー プリンシパル名。 COLE_DEFAULT_PRINCIPALが指定されている場合、DCOM はセキュリティ ブランケット ネゴシエーション アルゴリズムを使用してプリンシパル名を選択します。 認証サービスとして Kerberos を使用する場合、この値を NULL にすることはできません。 サーバーの正しいプリンシパル名である必要があります。または、呼び出しが失敗します。

認証サービスとして Schannel を使用する場合、この値は 「プリンシパル名」で説明されている msstd フォームまたは fullsic フォームのいずれかであるか、相互認証が必要ない場合は NULL である必要があります。

通常、 NULL を 指定すると、プロキシのサーバー プリンシパル名はリセットされません。代わりに、前の設定は保持されます。 プロキシ用に別の認証サービスを選択する場合は、新しく選択した認証サービスに対して以前に設定されたプリンシパル名が有効になる保証がないため、pServerPrincName として NULL を使用する場合は注意する必要があります。

[in] dwAuthnLevel

使用する認証レベル。 使用可能な値の一覧については、「 認証レベルの定数」を参照してください。 RPC_C_AUTHN_LEVEL_DEFAULTが指定されている場合、DCOM は通常のセキュリティ ブランケット ネゴシエーション アルゴリズムに従って認証レベルを選択します。 この値が none の場合、認証サービスも none にする必要があります。

[in] dwImpLevel

使用する偽装レベル。 使用できる値の一覧については、「 偽装レベル定数」を参照してください。 RPC_C_IMP_LEVEL_DEFAULTが指定されている場合、DCOM は通常のセキュリティ ブランケット ネゴシエーション アルゴリズムに従って偽装レベルを選択します。 NTLMSSP が認証サービスの場合、この値はRPC_C_IMP_LEVEL_IMPERSONATEまたはRPC_C_IMP_LEVEL_IDENTIFYする必要があります。 NTLMSSP では、同じコンピューターでの委任レベルの偽装 (RPC_C_IMP_LEVEL_DELEGATE) もサポートされます。 Schannel が認証サービスの場合、このパラメーターはRPC_C_IMP_LEVEL_IMPERSONATEする必要があります。

[in, optional] pAuthInfo

クライアントの ID を確立する RPC_AUTH_IDENTITY_HANDLE 値へのポインター。 ハンドルによって参照される構造体の形式は、認証サービスのプロバイダーによって異なります。

同じコンピューターでの呼び出しの場合、RPC は指定された資格情報を使用してユーザーにログを記録し、結果のトークンをメソッド呼び出しに使用します。

NTLMSSP または Kerberos の場合、構造体は SEC_WINNT_AUTH_IDENTITY または SEC_WINNT_AUTH_IDENTITY_EX 構造です。 クライアントは、API の呼び出し後に pAuthInfo を破棄できます。 RPC は pAuthInfo ポインターのコピーを保持せず、クライアントは後で CoQueryProxyBlanket メソッドでそれを取得できません。

このパラメーターが NULL の場合、DCOM は現在のプロキシ ID (プロセス トークンまたは偽装トークン) を使用します。 ハンドルが構造体を参照している場合は、その ID が使用されます。

Schannel の場合、このパラメーターは、クライアントの X.509 証明書を含む CERT_CONTEXT 構造体へのポインターであるか、クライアントがサーバーへの匿名接続を行う場合は NULL である必要があります。 証明書が指定されている場合、オブジェクトへのプロキシが現在のアパートメントに存在する限り、呼び出し元は証明書を解放できません。

Snego の場合、このメンバーは NULLSEC_WINNT_AUTH_IDENTITY 構造体を指すか、 SEC_WINNT_AUTH_IDENTITY_EX 構造体を指します。 NULL の場合、Snego はクライアント コンピューターで使用可能な認証サービスに基づいて認証サービスの一覧を選択します。 SEC_WINNT_AUTH_IDENTITY_EX構造体を指す場合、構造体の PackageList メンバーは、認証サービス名のコンマ区切りのリストを含む文字列を指す必要があり、PackageListLength メンバーは PackageList 文字列のバイト数を指定する必要があります。 PackageListNULL の場合、Snego を使用するすべての呼び出しは失敗します。

このパラメーターにCOLE_DEFAULT_AUTHINFOが指定されている場合、DCOM は通常のセキュリティ ブランケット ネゴシエーション アルゴリズムに従って認証情報を選択します。

pAuthInfo が設定され、クローキング フラグの 1 つが dwCapabilities パラメーターに設定されている場合、CoSetProxyBlanket は失敗します。

[in] dwCapabilities

このプロキシの機能。 使用可能な値の一覧については、 EOLE_AUTHENTICATION_CAPABILITIES 列挙を参照してください。 この関数を使用して設定できるフラグは、EOAC_MUTUAL_AUTH、EOAC_STATIC_CLOAKING、EOAC_DYNAMIC_CLOAKING、EOAC_ANY_AUTHORITY (このフラグは非推奨)、EOAC_MAKE_FULLSIC、およびEOAC_DEFAULTのみです。 pAuthInfo が設定されておらず、Schannel が認証サービスでない場合は、EOAC_STATIC_CLOAKINGまたはEOAC_DYNAMIC_CLOAKINGを設定できます。 (詳細については、「 クローキング 」を参照してください)。ここで説明した機能フラグ以外の機能フラグが設定されている場合、 CoSetProxyBlanket は失敗します。

戻り値

この関数は、次の値を返すことができます。

リターン コード 説明
S_OK
関数は成功しました。
E_INVALIDARG
1 つ以上の引数が無効です。

注釈

CoSetProxyBlanket は、指定したプロキシで呼び出しを行うために使用される認証情報を設定します。 この関数は、次の一連の一般的な呼び出しをカプセル化します (エラー処理は除外されます)。

    pProxy->QueryInterface(IID_IClientSecurity, (void**)&pcs);
    pcs->SetBlanket(pProxy, dwAuthnSvc, dwAuthzSvc, pServerPrincName, 
        dwAuthnLevel, dwImpLevel, pAuthInfo, dwCapabilities);
    pcs->Release();

このシーケンスは、プロキシで QueryInterface を 呼び出して IClientSecurity へのポインターを取得し、結果のポインターを使用して IClientSecurity::SetBlanket を呼び出し、ポインターを解放します。

要件

要件
サポートされている最小のクライアント Windows 2000 Professional [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows 2000 Server [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー combaseapi.h (Objbase.h を含む)
Library Ole32.lib
[DLL] Ole32.dll

こちらもご覧ください

CoQueryProxyBlanket

IClientSecurity::SetBlanket

COM のセキュリティ

インターフェイス プロキシ レベルでのセキュリティの設定