структура RPC_HTTP_TRANSPORT_CREDENTIALS_V2_A (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_A {
  SEC_WINNT_AUTH_IDENTITY_A *TransportCredentials;
  unsigned long             Flags;
  unsigned long             AuthenticationTarget;
  unsigned long             NumberOfAuthnSchemes;
  unsigned long             *AuthnSchemes;
  unsigned char             *ServerCertificateSubject;
  SEC_WINNT_AUTH_IDENTITY_A *ProxyCredentials;
  unsigned long             NumberOfProxyAuthnSchemes;
  unsigned long             *ProxyAuthnSchemes;
} RPC_HTTP_TRANSPORT_CREDENTIALS_V2_A, *PRPC_HTTP_TRANSPORT_CREDENTIALS_V2_A;

Члены

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