Функция 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 выберет службу авторизации в соответствии с обычным алгоритмом согласования общих сведений по безопасности. RPC_C_AUTHZ_NONE следует использовать в качестве службы авторизации, если в качестве службы проверки подлинности используется NTLMSSP, Kerberos или Schannel.

[in, optional] pServerPrincName

Имя субъекта-сервера, используемое со службой проверки подлинности. Если указано COLE_DEFAULT_PRINCIPAL, DCOM выберет имя субъекта с помощью алгоритма согласования общих сведений о безопасности. Если в качестве службы проверки подлинности используется Kerberos, это значение не должно иметь значение NULL. Это должно быть правильное имя участника сервера, в противном случае вызов завершится ошибкой.

Если в качестве службы проверки подлинности используется Schannel, это значение должно быть одной из форм msstd или fullsic, описанных в разделе Имена субъектов, или значением NULL , если не требуется взаимная проверка подлинности.

Как правило, при указании значения NULL имя участника-сервера на прокси-сервере не сбрасывается. вместо этого будет сохранен предыдущий параметр. При выборе другой службы проверки подлинности для прокси-сервера необходимо соблюдать осторожность при использовании значения NULL в качестве pServerPrincName , так как нет никакой гарантии, что заданное ранее имя участника будет допустимым для только что выбранной службы проверки подлинности.

[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

Указатель на RPC_AUTH_IDENTITY_HANDLE значение, определяющее удостоверение клиента. Формат структуры, на которую ссылается дескриптор, зависит от поставщика службы проверки подлинности.

Для вызовов на том же компьютере RPC регистрирует пользователя с указанными учетными данными и использует полученный маркер для вызова метода.

Для NTLMSSP или Kerberos структура является SEC_WINNT_AUTH_IDENTITY или SEC_WINNT_AUTH_IDENTITY_EX структурой. Клиент может отменить pAuthInfo после вызова API. RPC не хранит копию указателя pAuthInfo , и клиент не может получить ее позже в методе CoQueryProxyBlanket .

Если этот параметр имеет значение NULL, DCOM использует текущее удостоверение прокси-сервера (которое является маркером процесса или маркером олицетворения). Если дескриптор ссылается на структуру, используется это удостоверение.

Для Schannel этот параметр должен быть либо указателем на CERT_CONTEXT структуру, содержащую сертификат X.509 клиента, либо иметь значение NULL , если клиент хочет установить анонимное подключение к серверу. Если указан сертификат, вызывающий объект не должен освобождать его до тех пор, пока в текущем объекте существует прокси-сервер.

Для Snego этот элемент имеет значение NULL, указывает на структуру SEC_WINNT_AUTH_IDENTITY или на структуру SEC_WINNT_AUTH_IDENTITY_EX . Если значение равно NULL, Snego выберет список служб проверки подлинности на основе служб, доступных на клиентском компьютере. Если он указывает на SEC_WINNT_AUTH_IDENTITY_EX структуру, элемент PackageList структуры должен указывать на строку, содержащую разделенный запятыми список имен служб проверки подлинности, а член PackageListLength должен указать количество байтов в строке PackageList . Если packageList имеет значение NULL, все вызовы с использованием Snego завершатся ошибкой.

Если для этого параметра задано COLE_DEFAULT_AUTHINFO, DCOM выберет сведения о проверке подлинности в соответствии с обычным алгоритмом согласования общих сведений о безопасности.

CoSetProxyBlanket завершится ошибкой , если задан параметр pAuthInfo и один из флагов маскировки установлен в параметре dwCapabilities .

[in] dwCapabilities

Возможности этого прокси-сервера. Список возможных значений см. в перечислении EOLE_AUTHENTICATION_CAPABILITIES . С помощью этой функции можно задать только флаги EOAC_MUTUAL_AUTH, EOAC_STATIC_CLOAKING, EOAC_DYNAMIC_CLOAKING, EOAC_ANY_AUTHORITY (этот флаг не рекомендуется), EOAC_MAKE_FULLSIC и EOAC_DEFAULT. Можно задать EOAC_STATIC_CLOAKING или EOAC_DYNAMIC_CLOAKING, если параметр pAuthInfo не задан и Schannel не является службой проверки подлинности. (Дополнительные сведения см. в разделе Cloaking .) Если установлены флаги возможностей, отличные от упомянутых здесь, CoSetProxyBlanket завершится ошибкой .

Возвращаемое значение

Эта функция может возвращать следующие значения.

Код возврата Описание
S_OK
Функция выполнена успешно.
E_INVALIDARG
Один или несколько аргументов недопустимы.

Комментарии

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
Header combaseapi.h (включая Objbase.h)
Библиотека Ole32.lib
DLL Ole32.dll

См. также раздел

CoQueryProxyBlanket

IClientSecurity::SetBlanket

Безопасность в COM

Настройка безопасности на уровне прокси-сервера интерфейса