RpcBindingSetAuthInfo 함수(rpcdce.h)

RpcBindingSetAuthInfo 함수는 바인딩 핸들의 인증 및 권한 부여 정보를 설정합니다.

구문

RPC_STATUS RpcBindingSetAuthInfo(
  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 를 사용하는 경우 Rpcdce.h에 정의된 SEC_WINNT_AUTH_IDENTITY 구조체에 대한 포인터여야 합니다. 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에서는 RPC_C_AUTHN_GSS_SCHANNEL 인증 서비스에 대한 AuthIdentity 매개 변수로 전달되는 유일한 허용 가능한 구조는 SCHANNEL_CRED 구조입니다.
 

AuthzSvc

관심 있는 인터페이스를 위해 서버에서 구현한 권한 부여 서비스입니다. 참고를 참조하십시오.

권한 부여 데이터의 유효성 및 신뢰성(예: 애플리케이션 데이터)은 선택한 인증 서비스 및 인증 수준에 따라 달라집니다. 이 매개 변수는 RPC_C_AUTHN_WINNT 인증 서비스를 사용할 때 무시됩니다.

 

반환 값

의미
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 SP1 및 Windows XP SP2 사용: Windows XP SP2 및 Windows Server 2003 SP1의 경우 바인딩 핸들의 수명 동안 AuthIdentity 매개 변수에 대한 포인터를 유지 관리할 필요가 없습니다. 이 포인터는 RpcBindingInqAuthInfo 또는 RpcBindingInqAuthInfoEx 에 대한 후속 호출이 수행되는 경우에만 유지 관리되어야 합니다.

참고 동일한 핸들에서 RPC 호출이 진행되는 동안 바인딩 핸들에서 RpcBindingSetAuthInfo 함수를 호출해서는 안 됩니다. 이렇게 하면 정의되지 않은 결과가 생성됩니다.
 

요구 사항

   
지원되는 최소 클라이언트 Windows 2000 Professional [데스크톱 앱 | UWP 앱]
지원되는 최소 서버 Windows 2000 Server [데스크톱 앱 | UWP 앱]
대상 플랫폼 Windows
헤더 rpcdce.h(Rpc.h 포함)
라이브러리 Rpcrt4.lib
DLL Rpcrt4.dll

추가 정보

MSMQ Security Services

RpcBindingInqAuthInfo

RpcBindingSetOption

RpcServerRegisterAuthInfo