Функция 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 завершится ошибкой .
Возвращаемое значение
Эта функция может возвращать следующие значения.
Код возврата | Описание |
---|---|
|
Функция выполнена успешно. |
|
Один или несколько аргументов недопустимы. |
Комментарии
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 |