Поделиться через


структура RPC_HTTP_TRANSPORT_CREDENTIALS_V2_W (rpcdce.h)

Структура RPC_HTTP_TRANSPORT_CREDENTIALS_V2 определяет дополнительные учетные данные для проверки подлинности на прокси-сервере RPC или прокси-сервере HTTP при использовании RPC/HTTP.

RPC_HTTP_TRANSPORT_CREDENTIALS_V2 расширяет RPC_HTTP_TRANSPORT_CREDENTIALS , разрешая проверку подлинности на прокси-сервере HTTP.

Синтаксис

typedef struct _RPC_HTTP_TRANSPORT_CREDENTIALS_V2_W {
  SEC_WINNT_AUTH_IDENTITY_W *TransportCredentials;
  unsigned long             Flags;
  unsigned long             AuthenticationTarget;
  unsigned long             NumberOfAuthnSchemes;
  unsigned long             *AuthnSchemes;
  unsigned short            *ServerCertificateSubject;
  SEC_WINNT_AUTH_IDENTITY_W *ProxyCredentials;
  unsigned long             NumberOfProxyAuthnSchemes;
  unsigned long             *ProxyAuthnSchemes;
} RPC_HTTP_TRANSPORT_CREDENTIALS_V2_W, *PRPC_HTTP_TRANSPORT_CREDENTIALS_V2_W;

Члены

TransportCredentials

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

Flags

Набор флагов, которые можно объединить с побитовой оператором OR.

Значение Значение
RPC_C_HTTP_FLAG_USE_SSL
Указывает RPC использовать SSL для связи с прокси-сервером RPC.
RPC_C_HTTP_FLAG_USE_FIRST_AUTH_SCHEME
Если этот параметр задан, RPC выбирает первую схему в массиве AuthnSchemes и пытается пройти проверку подлинности на прокси-сервере RPC. Если прокси-сервер RPC не поддерживает выбранную схему проверки подлинности, вызов завершится ошибкой. Если этот параметр не задан, клиент RPC запрашивает у прокси-сервера RPC поддерживаемые схемы проверки подлинности и выбирает одну из них.

AuthenticationTarget

Указывает целевой объект проверки подлинности.

Должно быть задано одно или оба из следующих значений:

Значение Значение
RPC_C_HTTP_AUTHN_TARGET_SERVER
Выполните проверку подлинности на прокси-сервере RPC, который является HTTP-сервером с точки зрения HTTP. Это наиболее распространенное значение.
RPC_C_HTTP_AUTHN_TARGET_PROXY
Проверка подлинности на прокси-сервере HTTP. Это значение встречается редко.

NumberOfAuthnSchemes

Количество элементов в массиве AuthnScheme .

AuthnSchemes

Указатель на массив схем проверки подлинности, которые клиент готов использовать. Каждый элемент массива может содержать одну из следующих констант:

RPC_C_HTTP_AUTHN_SCHEME_BASIC

RPC_C_HTTP_AUTHN_SCHEME_NTLM

RPC_C_HTTP_AUTHN_SCHEME_PASSPORT

RPC_C_HTTP_AUTHN_SCHEME_DIGEST

RPC_C_HTTP_AUTHN_SCHEME_NEGOTIATE

RPC_C_HTTP_AUTHN_SCHEME_PASSPORT, RPC_C_HTTP_AUTHN_SCHEME_NEGOTIATE и RPC_C_HTTP_AUTHN_SCHEME_DIGEST определяются как константы, но в настоящее время не поддерживаются. Вызывающие абоненты не должны указывать их; Это приводит к ошибке RPC_S_CANNOT_SUPPORT. Каждую константу можно указать один раз. RPC не проверяет это ограничение по соображениям производительности, но указание константы несколько раз приводит к неопределенным результатам.

Алгоритм выбора фактической схемы проверки подлинности выглядит следующим образом:

Если указан RPC_C_HTTP_FLAG_USE_FIRST_AUTH_SCHEME, выбирается первая схема проверки подлинности. Если это не поддерживается сервером, установка подключения завершается сбоем. Если RPC_C_HTTP_FLAG_USE_FIRST_AUTH_SCHEME не указан, клиент RPC сначала пытается анонимно подключиться к прокси-серверу RPC. Если IIS возвращает запрос проверки подлинности, клиент RPC выбирает схему проверки подлинности, предпочитаемую сервером, если она также находится в массиве AuthnScheme . Если схема, предпочитаемая сервером, не находится в массиве AuthnScheme , массив AuthnScheme будет пройден от начала до конца, и если будет найдена схема, которая также поддерживается сервером, используется эта схема проверки подлинности.

ServerCertificateSubject

Содержит необязательную строку с ожидаемым именем субъекта-сервера. Имя субъекта имеет тот же формат, что и имя, созданное для RpcCertGeneratePrincipalName (дополнительные сведения см. в разделе Имена субъектов ). Этот элемент используется только при использовании SSL. В таких случаях сертификат сервера проверяется на соответствие созданному имени субъекта. Если они не совпадают, возвращается ошибка. Этот член позволяет клиентам проходить проверку подлинности прокси-сервера RPC.

ProxyCredentials

Указатель на структуру SEC_WINNT_AUTH_IDENTITY , содержащую имя пользователя, домен и пароль для пользователя при проверке подлинности на прокси-сервере HTTP. ProxyCredentials действителен , только если AuthenticationTarget содержит RPC_C_HTTP_AUTHN_TARGET_PROXY.

NumberOfProxyAuthnSchemes

Количество элементов в массиве ProxyAuthnSchemes при проверке подлинности на прокси-сервере HTTP. Аргумент NumberOfProxyAuthnSchemes действителен , только если AuthenticationTarget содержит RPC_C_HTTP_AUTHN_TARGET_PROXY.

ProxyAuthnSchemes

Указатель на массив схем проверки подлинности, которые клиент готов использовать при проверке подлинности на прокси-сервере HTTP. Каждый элемент массива может содержать одну из следующих констант. ProxyAuthnSchemes действителен , только если AuthenticationTarget содержит RPC_C_HTTP_AUTHN_TARGET_PROXY.

RPC_C_HTTP_AUTHN_SCHEME_BASIC

RPC_C_HTTP_AUTHN_SCHEME_NTLM

RPC_C_HTTP_AUTHN_SCHEME_PASSPORT

RPC_C_HTTP_AUTHN_SCHEME_DIGEST

RPC_C_HTTP_AUTHN_SCHEME_NEGOTIATE

Комментарии

Если член TransportCredentials имеет значение NULL , а схема проверки подлинности — NTLM, используются учетные данные текущего пользователя, выполнившего вход. Чтобы избежать предоставления учетных данных пользователя в сети через слабый хэш LM, учетные данные входа пользователя используются только в том случае, если выполняются одно или оба из следующих условий:

  • Вызывающий запрос на использование SSL и член ServerCertificateSubject . Этот сценарий гарантирует защиту учетных данных как при передаче, так и в конечном месте назначения, даже если используется слабый хэш.
  • Для ключа lncompatibilitylevel задано значение 2 или выше. Это приводит к тому, что поставщик безопасности NTLM выдает или реагирует только на сильный хэш NT, а не на слабый хэш LM. Кроме того, клиентам рекомендуется использовать уровень 3 или выше, который будет пытаться использовать NTLMv2.
Если используется версия Юникода функции RpcBindingSetAuthInfoEx , необходимо также указать версии Юникода RPC_HTTP_TRANSPORT_CREDENTIALS_V2 и SEC_WINNT_AUTH_IDENTITY структур, а член Flags в TransportCredentials должен иметь значение SEC_WINNT_AUTH_IDENTITY_UNICODE. Если используется версия ANSI функции RpcBindingSetAuthInfoEx , необходимо указать версии ANSI RPC_HTTP_TRANSPORT_CREDENTIALS_V2 и SEC_WINNT_AUTH_IDENTITY структур, а для элемента Flags в TransportCredentials необходимо задать значение SEC_WINNT_AUTH_IDENTITY_ANSI.

Требования

Требование Значение
Минимальная версия клиента Windows Vista [только классические приложения]
Минимальная версия сервера Windows Server 2008 [только классические приложения]
Верхняя часть rpcdce.h (включая Rpc.h)

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

Имена субъектов

RPC_HTTP_TRANSPORT_CREDENTIALS

RPC_HTTP_TRANSPORT_CREDENTIALS_V3

RPC_SECURITY_QOS

RPC_SECURITY_QOS_V2

RPC_SECURITY_QOS_V3

Удаленные вызовы процедур с помощью RPC через HTTP

RpcBindingSetAuthInfoEx

RpcCertGeneratePrincipalName

SEC_WINNT_AUTH_IDENTITY