структура RPC_BINDING_HANDLE_SECURITY_V1_A (rpcdce.h)
Структура RPC_BINDING_HANDLE_SECURITY_V1 содержит основные параметры безопасности, с помощью которых создается дескриптор привязки RPC.
Синтаксис
typedef struct _RPC_BINDING_HANDLE_SECURITY_V1_A {
unsigned long Version;
unsigned char *ServerPrincName;
unsigned long AuthnLevel;
unsigned long AuthnSvc;
SEC_WINNT_AUTH_IDENTITY_A *AuthIdentity;
RPC_SECURITY_QOS *SecurityQos;
} RPC_BINDING_HANDLE_SECURITY_V1_A, *PRPC_BINDING_HANDLE_SECURITY_V1_A;
Члены
Version
Версия этой структуры. Для RPC_BINDING_HANDLE_SECURITY_V1 это значение должно быть равным 1.
ServerPrincName
Указатель на строку, содержащую имя участника сервера, на которое ссылается дескриптор привязки. Содержимое имени и его синтаксис определяются используемой службой проверки подлинности.
AuthnLevel
Уровень проверки подлинности для удаленных вызовов процедур, выполненных с помощью этого дескриптора привязки. Список уровней проверки подлинности, поддерживаемых RPC, см. в разделе Константы уровня проверки подлинности.
Если для AuthnSvc задано значение RPC_C_AUTHN_NONE, для этого элемента также должно быть задано значение RPC_C_AUTHN_NONE.
AuthnSvc
Служба проверки подлинности, используемая при привязке.
Укажите RPC_C_AUTHN_NONE, чтобы отключить проверку подлинности для удаленных вызовов процедур, выполненных с помощью дескриптора привязки.
Если указано RPC_C_AUTHN_DEFAULT, библиотека времени выполнения RPC использует службу проверки подлинности RPC_C_AUTHN_WINNT для удаленных вызовов процедур, выполняемых с помощью дескриптора привязки.
Если для AuthnLevel задано значение RPC_C_AUTHN_NONE, для этого элемента также должно быть задано значение RPC_C_AUTHN_NONE.
AuthIdentity
SEC_WINNT_AUTH_IDENTITY структура, содержащая учетные данные для проверки подлинности и авторизации клиента, соответствующие выбранной службе проверки подлинности и авторизации.
SecurityQos
RPC_SECURITY_QOS структуры, содержащей параметры качества обслуживания безопасности для дескриптора привязки.
Комментарии
Если эта структура не передается в RpcBindingCreate , то есть если параметр SecurityrpcBindingCreate имеет значение NULL , то предполагается следующее поведение безопасности по умолчанию:
- Для последовательности протокола ncalrpc (локальный RPC) RPC будет использовать безопасность на уровне транспорта. Это означает, что RPC будет использовать механизмы безопасности, предлагаемые ядром Windows для обеспечения безопасности, и RPC не будет проверять подлинность сервера, так как он подключается с использованием текущего удостоверения потока. В этом случае отслеживание удостоверений является статическим, тип олицетворения — "Олицетворение", а уровень проверки подлинности — "Конфиденциальность".
- Для ncacn_np последовательности протоколов RPC также будет использовать безопасность на уровне транспорта. Если вызов является удаленным, RPC использует механизмы безопасности, предоставляемые перенаправителем файловой системы Windows, и взаимная проверка подлинности отсутствует. В этом случае удостоверение — это удостоверение текущего потока, состояние отслеживания удостоверений — статическое, тип олицетворения — «Олицетворение», а уровень проверки подлинности определяется политиками удаленного компьютера.
Если вызов является локальным, RPC использует механизмы безопасности, предоставляемые файловой системой именованного канала (NPFS), а также не существует взаимной проверки подлинности. В этом случае удостоверением является текущее удостоверение потока или любое удостоверение, установленное с помощью команды net use для сервера. Состояние отслеживания удостоверений является динамическим, для типа олицетворения задано значение "Олицетворение", а для уровня проверки подлинности — значение "Конфиденциальность".
- Для последовательностей протоколов ncacn_ip_tcp, ncacn_ip_udp и ncacn_http безопасность не используется, если для параметра Безопасность задано значение NULL. Сервер не будет выполнять олицетворение, и все данные будут отправляться в виде ясного текста. Чтобы обеспечить максимальную защиту данных, приложение должно всегда предоставлять данные безопасности.
В следующей таблице перечислены параметры безопасности по умолчанию для различных последовательностей протоколов, если параметр SecurityrpcBindingCreate имеет значение NULL.
Параметры безопасности по умолчанию | ncalrpc | локальная ncacn_np | удаленное ncacn_np | ncacn_ip_tcp, ncacn_ip_udp и ncacn_http |
---|---|---|---|---|
Механизм безопасности | Ядро Windows | NPFS | Перенаправитель файловой системы | None |
Уровень проверки подлинности | Конфиденциальность | Конфиденциальность | Зависимость от политики сервера | None |
Взаимная проверка подлинности? | Нет | Нет | Нет | Нет |
Тип олицетворения | Impersonate | Impersonate | Impersonate | Н/Д |
Тип отслеживания удостоверений | Статические | Динамический | Статические | Н/Д |
Действует только? | Да | Нет | Н/Д | Н/Д |
Идентификатор вызова | Текущий поток | Текущий поток | Параметры текущего потока или "net use" | Н/Д |
При создании дескриптора быстрой привязки путем вызова API RpcBindingCreate отслеживание удостоверений по умолчанию для ncalrpc при отсутствии определенных параметров безопасности будет статическим.
При переключении между ними в приложении следует учитывать различия в этих двух API.
После создания дескриптора привязки можно использовать API RpcBindingSetAuthInfo и RpcBindingSetAuthInfoEx для изменения параметров набора дескрипторов привязки с этой структурой.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows Vista [только классические приложения] |
Минимальная версия сервера | Windows Server 2008 [только классические приложения] |
Верхняя часть | rpcdce.h (включая Rpc.h) |