структура RPC_HTTP_TRANSPORT_CREDENTIALS_V3_A (rpcdce.h)
Структура RPC_HTTP_TRANSPORT_CREDENTIALS_V3 определяет дополнительные учетные данные для проверки подлинности на прокси-сервере RPC или прокси-сервере HTTP при использовании RPC/HTTP.
RPC_HTTP_TRANSPORT_CREDENTIALS_V3 расширяет RPC_HTTP_TRANSPORT_CREDENTIALS_V2 , позволяя использовать произвольные формы учетных данных.
Синтаксис
typedef struct _RPC_HTTP_TRANSPORT_CREDENTIALS_V3_A {
RPC_AUTH_IDENTITY_HANDLE TransportCredentials;
unsigned long Flags;
unsigned long AuthenticationTarget;
unsigned long NumberOfAuthnSchemes;
unsigned long *AuthnSchemes;
unsigned char *ServerCertificateSubject;
RPC_AUTH_IDENTITY_HANDLE ProxyCredentials;
unsigned long NumberOfProxyAuthnSchemes;
unsigned long *ProxyAuthnSchemes;
} RPC_HTTP_TRANSPORT_CREDENTIALS_V3_A, *PRPC_HTTP_TRANSPORT_CREDENTIALS_V3_A;
Члены
TransportCredentials
Указатель на непрозрачный дескриптор проверки подлинности в виде структуры RPC_AUTH_IDENTITY_HANDLE .
Flags
Набор флагов, которые можно объединить с побитовой оператором OR.
AuthenticationTarget
Указывает целевой объект проверки подлинности.
Должно быть задано одно или оба из следующих значений:
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
Указатель на непрозрачный дескриптор проверки подлинности в виде структуры RPC_AUTH_IDENTITY_HANDLE при проверке подлинности на прокси-сервере 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.
Требования
Минимальная версия клиента | Windows 7 [только классические приложения] |
Минимальная версия сервера | Windows Server 2008 R2 [только классические приложения] |
Верхняя часть | rpcdce.h (включая Rpc.h) |
См. также раздел
RPC_HTTP_TRANSPORT_CREDENTIALS
RPC_HTTP_TRANSPORT_CREDENTIALS_V2