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


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

Структура RPC_SECURITY_QOS_V2 определяет параметры качества обслуживания безопасности версии 2 для дескриптора привязки. Сведения о доступности версий в выпусках Windows см. в разделе Примечания.

Синтаксис

typedef struct _RPC_SECURITY_QOS_V2_A {
  unsigned long Version;
  unsigned long Capabilities;
  unsigned long IdentityTracking;
  unsigned long ImpersonationType;
  unsigned long AdditionalSecurityInfoType;
  union {
    RPC_HTTP_TRANSPORT_CREDENTIALS_A *HttpCredentials;
  } u;
} RPC_SECURITY_QOS_V2_A, *PRPC_SECURITY_QOS_V2_A;

Члены

Version

Версия используемой структуры RPC_SECURITY_QOS . В этом разделе описана версия 2 структуры RPC_SECURITY_QOS . Другие версии см. в разделе RPC_SECURITY_QOS, RPC_SECURITY_QOS_V3, RPC_SECURITY_QOS_V4 и RPC_SECURITY_QOS_V5 .

Capabilities

Службы безопасности, предоставляемые приложению. Возможности — это набор флагов, которые можно объединить с помощью побитового оператора OR .

Значение Значение
RPC_C_QOS_CAPABILITIES_DEFAULT
Используется, когда не требуются возможности конкретного поставщика.
RPC_C_QOS_CAPABILITIES_MUTUAL_AUTH
Если указать этот флаг, во время выполнения RPC запрашивается взаимная проверка подлинности у поставщика безопасности. Некоторые поставщики безопасности не поддерживают взаимную проверку подлинности. Если поставщик безопасности не поддерживает взаимную проверку подлинности или не удается установить удостоверение сервера, удаленный вызов процедуры к такому серверу завершается ошибкой RPC_S_SEC_PKG_ERROR.
Примечание RPC использует поставщик общих служб, чтобы указать, какие параметры безопасности были успешно согласованы; RPC, в свою очередь, завершается сбоем при любом вызове, для которого поставщик SSP сообщает, что ему не удалось согласовать вариант. Однако известно, что некоторые поставщики безопасности сообщают об успешном согласовании варианта, даже если этот вариант не был успешно согласован. Например, NTLM сообщит об успешном согласовании взаимной проверки подлинности по соображениям обратной совместимости, даже если не поддерживает взаимную проверку подлинности. Обратитесь к конкретному поставщику общих служб, который используется, чтобы определить его поведение в отношении параметров безопасности.
 
RPC_C_QOS_CAPABILITIES_MAKE_FULLSIC
В настоящий момент не реализовано.
RPC_C_QOS_CAPABILITIES_ANY_AUTHORITY
Принимает учетные данные клиента, даже если центр сертификации (ЦС) отсутствует в списке доверенных ЦС сервера. Эта константа используется только поставщиком SCHANNEL SSP.
RPC_C_QOS_CAPABILITIES_IGNORE_DELEGATE_FAILURE
Если этот флаг указан, среда выполнения RPC на клиенте игнорирует ошибку, чтобы установить контекст безопасности, поддерживающий делегирование. Как правило, если клиент запрашивает делегирование, а система безопасности не может установить контекст безопасности, поддерживающий делегирование, возвращается RPC_S_SEC_PKG_ERROR ошибок; Если этот флаг указан, ошибка не возвращается.
Примечание Не поддерживается в Windows XP и более ранних клиентских выпусках, не поддерживается в Windows 2000 и более ранних версиях сервера.
 
RPC_C_QOS_CAPABILITIES_LOCAL_MA_HINT
При указании этот флаг указывает RPC, что сервер является локальным для компьютера, выполняющего вызов RPC. В этом случае RPC предписывает сопоставителям конечных точек выбирать только конечные точки, зарегистрированные субъектом, указанным в элементах ServerPrincName или Sid (эти элементы доступны только в RPC_SECURITY_QOS_V3, RPC_SECURITY_QOS_V4 и RPC_SECURITY_QOS_V5 ). Дополнительные сведения см. в разделе "Примечания".
Примечание Не поддерживается в Windows XP и более ранних клиентских выпусках, не поддерживается в Windows 2000 и более ранних версиях сервера.
 

IdentityTracking

Задает режим отслеживания контекста. Должно быть задано одно из значений, показанных в следующей таблице.

Значение Значение
RPC_C_QOS_IDENTITY_STATIC
Контекст безопасности создается только один раз и никогда не пересматривается в течение всего взаимодействия, даже если клиент изменяет его. Это поведение по умолчанию, если RPC_SECURITY_QOS_V2 не указан.
RPC_C_QOS_IDENTITY_DYNAMIC
Контекст пересматривается при каждом изменении ModifiedId в маркере клиента. Все протоколы используют ModifiedId (см. примечание).

Windows 2000: Все удаленные протоколы (все протоколы, отличные от ncalrpc) используют authenticationID, также известный как LogonId, для отслеживания изменений в удостоверении клиента. Протокол ncalrpc использует ModifiedId.

ImpersonationType

Уровень, на котором серверный процесс может олицетворить клиента.

Значение Значение
RPC_C_IMP_LEVEL_DEFAULT
Использует уровень олицетворения по умолчанию.
RPC_C_IMP_LEVEL_ANONYMOUS
Клиент не предоставляет серверу идентификационную информацию. Сервер не может олицетворять клиента или идентифицировать клиента. Многие серверы отклоняют вызовы с этим типом олицетворения.
RPC_C_IMP_LEVEL_IDENTIFY
Сервер может получить удостоверение клиента и олицетворить клиента для выполнения проверок списка контроль доступа ( ACL), но не может олицетворить клиента. Дополнительные сведения см. в разделе Уровни олицетворения .
Примечание Некоторые поставщики безопасности могут рассматривать этот тип олицетворения как эквивалентный RPC_C_IMP_LEVEL_IMPERSONATE.
 
RPC_C_IMP_LEVEL_IMPERSONATE
Сервер может олицетворять контекст безопасности клиента в локальной системе, но не в удаленных системах.
RPC_C_IMP_LEVEL_DELEGATE
Сервер может олицетворять контекст безопасности клиента, пока действует от его лица. Сервер также может выполнять исходящие вызовы к другим серверам, действуя от имени клиента. Сервер может использовать контекст безопасности клиента на других компьютерах для доступа к локальным и удаленным ресурсам в качестве клиента.

AdditionalSecurityInfoType

Указывает тип дополнительных учетных данных, присутствующих в объединении u . Поддерживаются следующие константы:

Поддерживаемые константы Значение
0
Дополнительные учетные данные в союзе u не передаются.
RPC_C_AUTHN_INFO_TYPE_HTTP
Элемент HttpCredentials объединения u указывает на RPC_HTTP_TRANSPORT_CREDENTIALS структуру. Это значение можно использовать, только если последовательность протоколов ncacn_http. Любая другая последовательность протоколов возвращает RPC_S_INVALID_ARG.

u

u.HttpCredentials

Дополнительный набор учетных данных для передачи в RPC в виде структуры RPC_HTTP_TRANSPORT_CREDENTIALS . Используется, если для элемента AdditionalSecurityInfoType задано значение RPC_C_AUTHN_INFO_TYPE_HTTP.

Комментарии

В следующем списке определяется доступность версий QOS в различных операционных системах Windows:

  • Версия 1: Windows 2000 и более поздние версии.
  • Версия 2: Windows XP с пакетом обновления 1 (SP1) и более поздних версий.
  • Версия 3: Windows Server 2003 и более поздние версии.
  • Версия 4: Windows Vista и более поздних версий.
  • Версия 5: Windows 8 и более поздних версий.
Выпуски Windows также поддерживают более ранние версии. Например, Windows Server 2003 поддерживает версию 3, но также поддерживает версии 1 и 2.

Функции безопасности на стороне клиента RpcBindingInqAuthInfoEx и RpcBindingSetAuthInfo используют структуру RPC_SECURITY_QOS , чтобы узнать о качестве безопасности обслуживания для дескриптора привязки или задать его.

RPC поддерживает указание RPC_C_QOS_CAPABILITIES_LOCAL_MA_HINT (не поддерживается в Windows XP и более ранних клиентских выпусках, не поддерживается в Windows 2000 и более ранних версиях server). Это указание используется только при использовании динамических конечных точек и взаимной проверки подлинности. Кроме того, он не поддерживается для последовательностей протоколов ncadg_ . Если этот флаг используется для последовательности протокола ncadg_ или без использования взаимной проверки подлинности, RPC_S_INVALID_ARG возвращается из вызова функции RpcBindingSetAuthInfoEx . Этот флаг предназначен для предотвращения атаки типа "отказ в обслуживании". При использовании этого флага среда выполнения RPC запрашивает у сопоставителя конечных точек только конечные точки, зарегистрированные субъектом, указанным в элементах ServerPrincName или Sid . Это предотвращает попытку злоумышленника на локальном компьютере обмануть клиент RPC для подключения к подделаной конечной точке, зарегистрированной в средстве сопоставления конечных точек. Обратите внимание, что так как атака является локальной (например, с компьютера сервера терминалов с большим количеством пользователей), флаг также работает только для вызовов RPC, выполненных локально.

Примечание Некоторые поставщики безопасности, например Kerberos, поддерживают тип олицетворения делегирования. В выпусках Windows, поддерживающих тип олицетворения делегирования, если клиент запросил делегирование, но поставщик безопасности не может предоставить его, вызов завершается сбоем с PRC_S_SEC_PKG_ERROR, если не указан флаг RPC_C_QOS_CAPABILITIES_IGNORE_DELEGATE_FAILURE.
 

Требования

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

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

RPC_HTTP_TRANSPORT_CREDENTIALS

RPC_SECURITY_QOS

RPC_SECURITY_QOS_V3

RPC_SECURITY_QOS_V4

RPC_SECURITY_QOS_V5

RpcBindingInqAuthInfoEx

RpcBindingSetAuthInfoEx