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


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

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

Синтаксис

typedef struct _RPC_SECURITY_QOS_V3_A {
  unsigned long Version;
  unsigned long Capabilities;
  unsigned long IdentityTracking;
  unsigned long ImpersonationType;
  unsigned long AdditionalSecurityInfoType;
  union {
    RPC_HTTP_TRANSPORT_CREDENTIALS_A *HttpCredentials;
  } u;
  void          *Sid;
} RPC_SECURITY_QOS_V3_A, *PRPC_SECURITY_QOS_V3_A;

Члены

Version

Версия используемой структуры RPC_SECURITY_QOS . В этом разделе описана версия 3 структуры RPC_SECURITY_QOS . Другие версии см . в разделах RPC_SECURITY_QOS, RPC_SECURITY_QOS_V2 и 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, в свою очередь, завершается сбоем любого вызова, для которого поставщик общих служб сообщает, что ему не удалось согласовать вариант. Однако известно, что некоторые поставщики безопасности сообщают об успешном согласовании варианта, даже если этот вариант не был успешно согласован. Например, 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_V3 не указан.
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.

Sid

Указывает на идентификатор безопасности (SID). Идентификатор безопасности является альтернативой члену ServerPrincName и может быть указан только один. Для элемента Sid нельзя задать значение, отличное от NULL , если поставщиком безопасности является поставщик SCHANNEL SSP. В некоторых последовательностях протоколов для обеспечения безопасности используется идентификатор sid , а в некоторых используется имя_сервераPrincName. Например, ncalrpc использует идентификатор безопасности для внутренних целей, и если вызывающий объект знает идентификатор безопасности и имя _сервера, вызов с использованием ncalrpc может завершиться гораздо быстрее в некоторых случаях при передаче идентификатора безопасности. В отличие от этого, последовательности протоколов ncacn_ и ncadg_ используют serverPrincName для внутреннего использования и, следовательно, могут выполнять вызовы быстрее при указании ServerPrincName.

Комментарии

В следующем списке определяется доступность версий 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 Vista [только классические приложения]
Минимальная версия сервера Windows Server 2003 [только классические приложения]
Верхняя часть rpcdce.h (включая Rpc.h)

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

RPC_HTTP_TRANSPORT_CREDENTIALS

RPC_SECURITY_QOS

RPC_SECURITY_QOS_V2

RPC_SECURITY_QOS_V4

RPC_SECURITY_QOS_V5

RpcBindingInqAuthInfoEx

RpcBindingSetAuthInfoEx