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


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

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

Синтаксис

RPC_STATUS RpcBindingSetAuthInfoA(
  RPC_BINDING_HANDLE       Binding,
  RPC_CSTR                 ServerPrincName,
  unsigned long            AuthnLevel,
  unsigned long            AuthnSvc,
  RPC_AUTH_IDENTITY_HANDLE AuthIdentity,
  unsigned long            AuthzSvc
);

Параметры

Binding

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

ServerPrincName

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

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

AuthnLevel

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

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 Constants.
 

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

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

Комментарии

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

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

Функция RpcBindingSetAuthInfo принимает snapshot учетных данных. Таким образом, память, выделенная для параметра 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]
Целевая платформа Windows
Header rpcdce.h (включая Rpc.h)
Библиотека Rpcrt4.lib
DLL Rpcrt4.dll

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

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

RpcBindingInqAuthInfo

RpcBindingSetOption

RpcServerRegisterAuthInfo