Качество обслуживания (RPC)
Клиентские программы могут использовать функцию RpcBindingSetAuthInfoEx вместо функции RpcBindingSetAuthInfo для создания привязки, прошедшей проверку подлинности. В этом случае они передают указатель на структуру RPC_SECURITY_QOS в качестве окончательного параметра RpcBindingSetAuthInfoEx. Эта структура содержит сведения о качестве обслуживания. Клиентские программы также могут указать отслеживание удостоверений и выбрать тип олицетворения.
Используйте элемент Capabilities структуры RPC_SECURITY_QOS , чтобы указать, какие части клиентского или серверного приложения проходят проверку подлинности. Если выбран RPC_C_QOS_CAPABILITIES_DEFAULT, библиотека времени выполнения RPC выполняет проверку подлинности клиента или сервера в соответствии со значением по умолчанию для поставщика общих служб. По умолчанию поставщик общих служб протокола Kerberos проверяет подлинность клиента и сервера. По умолчанию для всех остальных поставщиков SSP, которые предоставляет корпорация Майкрософт, является проверка подлинности клиента на сервере, но не проверка подлинности сервера на клиенте.
Если клиент и сервер должны всегда проходить проверку подлинности друг у друга, задайте для элемента Capabilities структуры RPC_SECURITY_QOS значение RPC_C_QOS_CAPABILITIES_MUTUAL_AUTH. Некоторые поставщики безопасности могут не поддерживать взаимную проверку подлинности. Если для таких поставщиков безопасности указан RPC_C_QOS_CAPABILITIES_MUTUAL_AUTH, при вызове удаленной процедуры возвращается ошибка. При использовании SCHANNEL SSP можно также задать для элемента Capabilities значение RPC_C_QOS_CAPABILITIES_ANY_AUTHORITY. Эта константа указывает, что поставщик общих служб должен проверить удаленный вызов процедуры, даже если центр сертификации, выдающий сертификат проверки подлинности клиента, не находится в корневом хранилище сертификатов поставщика общих служб. По умолчанию сертификат отклоняется, если поставщик общих служб не распознает центр сертификации. Центр сертификации — это независимая компания или организация, например VeriSign, которая выдает сертификаты проверки подлинности.
Приложения также могут задавать отслеживание удостоверений, которое использует библиотека времени выполнения RPC. Программы обычно используют статическое отслеживание удостоверений. При использовании статического отслеживания учетные данные клиента задаются при вызове функции RpcBindingSetAuthInfo . Затем библиотека времени выполнения RPC использует эти учетные данные для всех вызовов RPC в привязке, независимо от изменений в идентификаторе вызывающего потока или вызывающего процесса. Приложения также могут выбирать динамическое отслеживание удостоверений. Динамическое отслеживание удостоверений указывает библиотеке времени выполнения RPC использовать учетные данные вызывающего потока во время каждого вызова, а не дескриптор привязки. Отслеживание удостоверений по умолчанию является статическим.
Если удостоверение клиента не изменится, статическое отслеживание удостоверений может иметь более качественные характеристики производительности и может сэкономить время выполнения RPC от каждой проверки того, совпадает ли удостоверение в вызывающем потоке с удостоверением, предоставленным системе безопасности. Если удостоверение вызывающего потока может меняться между вызовами и сервер должен распознать эти изменения, рекомендуется указать динамическое отслеживание удостоверений— время выполнения RPC автоматически и эффективно отслеживает удостоверение, а если удостоверение меняется, управляет этим изменением от вашего имени.
Примечание
Для вызовов ncalrpc статическое и динамическое отслеживание удостоверений имеет различные характеристики производительности и в зависимости от обстоятельств может выполняться быстрее.
В рамках спецификации QOS клиентская программа также может задать тип олицетворения, который серверная программа может выполнять от своего имени. Дополнительные сведения см. в разделе Олицетворение клиента.
Поле номера версии структуры RPC_SECURITY_QOS всегда должно иметь значение RPC_C_SECURITY_QOS_VERSION.