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


Функция RpcBindingSetAuthInfoW (rpcdce.h)

Функция RpcBindingSetAuthInfo задает сведения о проверке подлинности и авторизации дескриптора привязки.

Синтаксис

RPC_STATUS RpcBindingSetAuthInfoW(
  RPC_BINDING_HANDLE       Binding,
  RPC_WSTR                 ServerPrincName,
  unsigned long            AuthnLevel,
  unsigned long            AuthnSvc,
  RPC_AUTH_IDENTITY_HANDLE AuthIdentity,
  unsigned long            AuthzSvc
);

Параметры

Binding

Дескриптор привязки сервера, к которому применяется информация о проверке подлинности и авторизации.

ServerPrincName

Указатель на ожидаемое имя субъекта сервера, на который ссылается Binding. Содержимое имени и его синтаксиса определяется используемой службой проверки подлинности.

Примечание Для набора допустимых целевых имен SSPs см. комментарии в документации InitializeSecurityContext.
 

AuthnLevel

Уровень проверки подлинности для удаленных вызовов процедур, выполненных с помощьюпривязки . Список уровней проверки подлинности, поддерживаемых RPC, см. в списке Authentication-Level констант.

AuthnSvc

Служба проверки подлинности для использования. См. примечание.

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

Если указан RPC_C_AUTHN_DEFAULT, библиотека времени выполнения RPC использует службу проверки подлинности RPC_C_AUTHN_WINNT для удаленных вызовов процедур, выполненных с помощью привязки.

AuthIdentity

Обработайте структуру, содержащую учетные данные проверки подлинности и авторизации клиента, соответствующие выбранной службе проверки подлинности и авторизации. При использовании службы проверки подлинности RPC_C_AUTHN_WINNT AuthIdentity должна быть указательом на структуру SEC_WINNT_AUTH_IDENTITY (определенную в Rpcdce.h). Службы проверки подлинности Kerberos и Negotiate также используют структуру SEC_WINNT_AUTH_IDENTITY.

При выборе службы проверки подлинности RPC_C_AUTHN_GSS_SCHANNEL параметр AuthIdentity должен быть указателем на структуру SCHANNEL_CRED (определено в Schannel.h). Укажите значение NULL для использования контекста входа в систему безопасности для текущего адресного пространства. Передайте значение RPC_C_NO_CREDENTIALS для использования контекста анонимного входа.

Примечание При выборе службы проверки подлинности RPC_C_AUTHN_GSS_SCHANNEL параметр AuthIdentity также может быть указателем на структуру SCH_CRED. Однако в Windows XP и более поздних выпусках Windows единственная допустимая структура, передаваемая в качестве параметра AuthIdentity для службы проверки подлинности RPC_C_AUTHN_GSS_SCHANNEL, является структурой SCHANNEL_CRED.
 

AuthzSvc

Служба авторизации, реализованная сервером для интересующего интерфейса. См. примечание.

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

Примечание Дополнительные сведения см. в Authentication-Service констант.
 

Возвращаемое значение

Ценность Значение
RPC_S_OK
Вызов выполнен успешно.
RPC_S_INVALID_BINDING
Дескриптор привязки недопустим.
RPC_S_WRONG_KIND_OF_BINDING
Это был неправильный вид привязки для операции.
RPC_S_UNKNOWN_AUTHN_SERVICE
Неизвестная служба проверки подлинности.
 
Примечание Список допустимых кодов ошибок см. в разделе возвращаемых значений RPC.
 

Замечания

Клиентское приложение вызывает функцию RpcBindingSetAuthInfo, чтобы настроить дескриптор привязки сервера для выполнения вызовов удаленных процедур с проверкой подлинности. Клиенту не требуется вызывать эту функцию.

Если клиент не вызывает RpcBindingSetAuthInfo, удаленные вызовы процедур в дескрипторе привязки привязки не проходят проверку подлинности. Сервер может вызывать RpcBindingInqAuthClient из удаленного вызова процедуры, чтобы определить, прошел ли этот вызов проверку подлинности.

Функция RpcBindingSetAuthInfo принимает моментальный снимок учетных данных. Таким образом, память, выделенная для параметра AuthIdentity, может быть освобождена перед дескриптором привязки.

В связи с различными требованиями различных версий Microsoft RPC корпорация Майкрософт рекомендует, чтобы приложение поддерживало указатель на параметр AuthIdentity до тех пор, пока дескриптор привязки существует. Это повышает переносимость приложения.

Windows Server 2003 с пакетом обновления 1 (SP1) и Windows XP с пакетом обновления 2 (SP2): для Windows XP с пакетом обновления 2 (SP2) и Windows Server 2003 с пакетом обновления 1 (SP1) указатель на параметр AuthIdentity не требуется поддерживать в течение срока действия дескриптора привязки. Этот указатель должен поддерживаться только в том случае, если последующие вызовы rpcBindingInqAuthInfo или RpcBindingInqAuthInfoEx.

Примечание Функция RpcBindingSetAuthInfo не должна вызываться в дескрипторе привязки во время выполнения вызова RPC в том же дескрипторе. Это приводит к неопределенным результатам.
 

Заметка

Заголовок rpcdce.h определяет RpcBindingSetAuthInfo как псевдоним, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора ЮНИКОДа. Сочетание использования псевдонима, нейтрального для кодирования, с кодом, не зависящим от кодирования, может привести к несоответствиям, которые приводят к ошибкам компиляции или среды выполнения. Дополнительные сведения см. в соглашениях о прототипах функций.

Требования

Требование Ценность
минимальные поддерживаемые клиентские Windows 2000 Профессиональный [классические приложения | Приложения UWP]
минимальный поддерживаемый сервер Windows 2000 Server [классические приложения | Приложения UWP]
целевая платформа Виндоус
заголовка rpcdce.h (include Rpc.h)
библиотеки Rpcrt4.lib
DLL Rpcrt4.dll

См. также

службы безопасности MSMQ

RpcBindingInqAuthInfo

RpcBindingSetOption

RpcServerRegisterAuthInfo