структура RPC_SECURITY_QOS (rpcdce.h)
Структура RPC_SECURITY_QOS определяет параметры качества обслуживания безопасности для дескриптора привязки. Сведения о доступности версий в выпусках Windows см. в разделе Примечания.
Синтаксис
typedef struct _RPC_SECURITY_QOS {
unsigned long Version;
unsigned long Capabilities;
unsigned long IdentityTracking;
unsigned long ImpersonationType;
} RPC_SECURITY_QOS, *PRPC_SECURITY_QOS;
Члены
Version
Версия используемой структуры RPC_SECURITY_QOS . В этом разделе описана версия 1 структуры RPC_SECURITY_QOS . Другие версии см. в разделе RPC_SECURITY_QOS_V2, RPC_SECURITY_QOS_V3, RPC_SECURITY_QOS_V4 и RPC_SECURITY_QOS_V5 .
Capabilities
Службы безопасности, предоставляемые приложению. Возможности — это набор флагов, которые можно объединить с помощью побитового оператора OR.
Значение | Значение |
---|---|
|
Используется, когда не требуются возможности конкретного поставщика. |
|
Если указать этот флаг, во время выполнения RPC запрашивается взаимная проверка подлинности у поставщика безопасности. Некоторые поставщики безопасности не поддерживают взаимную проверку подлинности. Если поставщик безопасности не поддерживает взаимную проверку подлинности или не удается установить удостоверение сервера, удаленный вызов процедуры к такому серверу завершается ошибкой RPC_S_SEC_PKG_ERROR.
Примечание RPC использует поставщик общих служб, чтобы указать, какие параметры безопасности были успешно согласованы; RPC, в свою очередь, завершается сбоем при любом вызове, для которого поставщик служб безопасности (SSP) сообщает, что ему не удалось согласовать вариант. Однако известно, что некоторые поставщики безопасности сообщают об успешном согласовании варианта, даже если этот вариант не был успешно согласован. Например, NTLM сообщит об успешном согласовании взаимной проверки подлинности по соображениям обратной совместимости, даже если не поддерживает взаимную проверку подлинности. Обратитесь к конкретному поставщику общих служб, который используется, чтобы определить его поведение в отношении параметров безопасности.
|
|
В настоящий момент не реализовано. |
|
Принимает учетные данные клиента, даже если центр сертификации (ЦС) отсутствует в списке доверенных ЦС сервера. Эта константа используется только поставщиком SCHANNEL SSP. |
|
Если этот флаг указан, среда выполнения RPC на клиенте игнорирует ошибку, чтобы установить контекст безопасности, поддерживающий делегирование. Как правило, если клиент запрашивает делегирование, а система безопасности не может установить контекст безопасности, поддерживающий делегирование, возвращается RPC_S_SEC_PKG_ERROR ошибок; Если этот флаг указан, ошибка не возвращается.
Примечание Не поддерживается в Windows XP и более ранних клиентских выпусках, не поддерживается в Windows 2000 и более ранних версиях сервера.
|
|
Этот флаг указывает RPC, что сервер является локальным для компьютера, выполняющего вызов RPC. В этом случае RPC предписывает сопоставителям конечных точек выбирать только конечные точки, зарегистрированные субъектом, указанным в элементах ServerPrincName или Sid (эти элементы доступны только в RPC_SECURITY_QOS_V3, RPC_SECURITY_QOS_V4 и RPC_SECURITY_QOS_V5 ). Дополнительные сведения см. в разделе "Примечания".
Примечание Не поддерживается в Windows XP и более ранних клиентских выпусках, не поддерживается в Windows 2000 и более ранних версиях сервера.
|
|
Если этот параметр задан, среда выполнения RPC использует SChannel SSP для выполнения проверки подлинности на основе смарт-карт без отображения диалогового окна запроса ПИН-кода поставщиком служб шифрования (CSP).
В вызове RpcBindingSetAuthInfoEx параметр AuthIdentity должен быть SEC_WINNT_AUTH_IDENTITY структурой, элементы которой содержат следующие элементы:
|
IdentityTracking
Задает режим отслеживания контекста. Должно быть задано одно из значений, показанных в следующей таблице.
Значение | Значение |
---|---|
|
Контекст безопасности создается только один раз и никогда не пересматривается в течение всего взаимодействия, даже если клиент изменяет его. Это поведение по умолчанию, если RPC_SECURITY_QOS не указан. |
|
Контекст пересматривается при каждом изменении ModifiedId в маркере клиента. Все протоколы используют ModifiedId (см. примечание).
Windows 2000: Все удаленные протоколы (все протоколы, отличные от ncalrpc) используют authenticationID, также известный как LogonId, для отслеживания изменений в удостоверении клиента. Протокол ncalrpc использует ModifiedId. |
ImpersonationType
Уровень, на котором серверный процесс может олицетворить клиента.
Значение | Значение |
---|---|
|
Использует уровень олицетворения по умолчанию. |
|
Клиент не предоставляет серверу идентификационную информацию. Сервер не может олицетворять клиента или идентифицировать клиента. Многие серверы отклоняют вызовы с этим типом олицетворения.
Примечание Некоторые поставщики безопасности могут рассматривать этот тип олицетворения как эквивалентный RPC_C_IMP_LEVEL_IMPERSONATE. От поставщиков безопасности Windows это делается RPC_C_AUTHN_WINNT только при использовании с последовательности протоколов, отличных от ncalrpc. Это также делается RPC_C_AUTHN_GSS_NEGOTIATE, RPC_C_AUTHN_GSS_SCHANNEL и RPC_C_AUTHN_GSS_KERBEROS.
|
|
Сервер может получить удостоверение клиента и олицетворить клиента для выполнения проверок списка контроль доступа ( ACL), но не может олицетворить клиента. Дополнительные сведения см. в разделе Уровни олицетворения .
Примечание Некоторые поставщики безопасности могут рассматривать этот тип олицетворения как эквивалентный RPC_C_IMP_LEVEL_IMPERSONATE. От поставщиков безопасности Windows это делается RPC_C_AUTHN_WINNT только при использовании с последовательности протоколов, отличных от ncalrpc. Это также делается RPC_C_AUTHN_GSS_NEGOTIATE, RPC_C_AUTHN_GSS_SCHANNEL и RPC_C_AUTHN_GSS_KERBEROS.
|
|
Сервер может олицетворять контекст безопасности клиента в локальной системе, но не в удаленных системах. |
|
Сервер может олицетворять контекст безопасности клиента, пока действует от его лица. Сервер также может выполнять исходящие вызовы к другим серверам, действуя от имени клиента. Сервер может использовать контекст безопасности клиента на других компьютерах для доступа к локальным и удаленным ресурсам в качестве клиента. |
Комментарии
В следующем списке определяется доступность версий QOS в различных операционных системах Windows:
- Версия 1: Windows 2000 и более поздние версии.
- Версия 2: Windows XP с пакетом обновления 1 (SP1) и более поздних версий.
- Версия 3: Windows Server 2003 и более поздние версии.
- Версия 4: Windows Vista и более поздних версий.
- Версия 5: Windows 8 и более поздних версий.
Функции безопасности на стороне клиента RpcBindingInqAuthInfoEx и RpcBindingSetAuthInfo используют структуру RPC_SECURITY_QOS , чтобы узнать о качестве безопасности обслуживания для дескриптора привязки или задать его.
RPC поддерживает указание RPC_C_QOS_CAPABILITIES_LOCAL_MA_HINT. Это указание используется только при использовании динамических конечных точек и взаимной проверки подлинности. Кроме того, он не поддерживается для последовательностей протоколов ncadg_ . Если этот флаг используется для последовательности протокола ncadg_ или без использования взаимной проверки подлинности, RPC_S_INVALID_ARG возвращается из вызова функции RpcBindingSetAuthInfoEx . Этот флаг предназначен для предотвращения атаки типа "отказ в обслуживании". Использование этого флага заставляет среду выполнения RPC запрашивать у сопоставителя конечных точек только конечные точки, зарегистрированные субъектом, указанным в элементах ServerPrincName или Sid . Это предотвращает попытку злоумышленника на локальном компьютере обмануть клиент RPC для подключения к подделаной конечной точке, зарегистрированной в средстве сопоставления конечных точек. Обратите внимание, что так как атака является локальной (например, с компьютера сервера терминалов с большим количеством пользователей), флаг также работает только для вызовов RPC, выполненных локально.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows 2000 Professional [только классические приложения] |
Минимальная версия сервера | Windows 2000 Server [только классические приложения] |
Верхняя часть | rpcdce.h (включая Rpc.h) |