Share via


RpcGetAuthorizationContextForClient 함수(rpcasync.h)

RpcGetAuthorizationContextForClient 함수는 고성능 인증을 위해 Authz 함수와 함께 사용할 수 있는 RPC 클라이언트에 대한 Authz 컨텍스트를 반환합니다. ncalrpcncacn_* 프로토콜 시퀀스에만 지원됩니다.

구문

RPC_STATUS RpcGetAuthorizationContextForClient(
  [in, optional] RPC_BINDING_HANDLE ClientBinding,
  [in]           BOOL               ImpersonateOnReturn,
  [in]           PVOID              Reserved1,
  [in, optional] PLARGE_INTEGER     pExpirationTime,
  [in]           LUID               Reserved2,
  [in]           DWORD              Reserved3,
  [in]           PVOID              Reserved4,
  [out]          PVOID              *pAuthzClientContext
);

매개 변수

[in, optional] ClientBinding

클라이언트에 대한 바인딩을 나타내는 서버의 바인딩 핸들입니다. 서버는 이 핸들로 표시된 클라이언트를 가장합니다. 값이 0으로 지정된 경우 서버는 이 서버 스레드에서 제공하는 클라이언트를 가장합니다.

[in] ImpersonateOnReturn

반환할 때 클라이언트를 가장한 다음 AUTHZ_CLIENT_CONTEXT_HANDLE 구조를 반환하도록 함수를 지시합니다. 클라이언트를 가장하려면 이 매개 변수를 0이 아닌 값으로 설정합니다. 설명 부분을 참조하세요.

[in] Reserved1

예약되어 있습니다. Null이어야 합니다.

[in, optional] pExpirationTime

토큰의 만료 날짜 및 시간에 대한 포인터입니다. 값이 전달되지 않으면 토큰이 만료되지 않습니다. 만료 시간은 현재 적용되지 않습니다.

[in] Reserved2

예약되어 있습니다. 각 멤버가 0으로 설정된 LUID 구조체여야 합니다.

[in] Reserved3

예약되어 있습니다. 0이어야 합니다.

[in] Reserved4

예약되어 있습니다. Null이어야 합니다.

[out] pAuthzClientContext

Authz 함수에 직접 전달할 수 있는 AUTHZ_CLIENT_CONTEXT_HANDLE 구조체에 대한 포인터입니다. 함수가 실패하면 이 매개 변수의 내용이 정의되지 않습니다.

반환 값

의미
RPC_S_OK
호출이 성공했습니다.
RERROR_INVALID_PARAMETER
예약된 매개 변수는 지정된 값과 다릅니다.
RPC_S_NO_CONTEXT_AVAILABLE
RPC 클라이언트가 성공적으로 인증되지 않았습니다.
 

오류는 RPC_S_* 오류 코드 또는 Windows 오류 코드를 반환합니다. 확장된 오류 정보는 표준 RPC 또는 Windows 오류 코드 검색 메커니즘을 통해 사용할 수 있습니다. 유효한 오류 코드 목록은 RPC 반환 값을 참조하세요.

설명

RpcGetAuthorizationContextForClient 함수는 RpcImpersonateClient 함수와 동일한 컨텍스트에서 호출할 수 있습니다. 검사 가장하는 모든 함수는 호출자에게 SeImpersonatePrivilege 권한이 있는지 여부를 확인합니다. 호출자에게 SeImpersonatePrivilege가 있거나 인증된 ID가 호출자와 동일한 경우 요청된 가장이 허용됩니다. 그렇지 않으면 가장은 식별 수준에서만 성공합니다.

참고 SeImpersonatePrivilege 권한은 SP2(서비스 팩 2)가 있는 Windows XP까지 지원되지 않습니다.

RpcGetAuthorizationContextForClient 함수는 ncalrpc 및 ncacn_* 프로토콜 시퀀스에 대해서만 지원되며 전송 보안만 구현하는 명명된 파이프에서는 지원되지 않습니다.

RpcGetAuthorizationContextForClient 함수는 스레드로부터 안전하며 여러 스레드에서 호출할 수 있습니다. pAuthzClientContext에서 반환되는 컨텍스트는 함수 호출과 독립적이며 완료 후에 사용할 수 있습니다. 호출자는 RpcFreeAuthorizationContext 함수를 호출하여 컨텍스트를 해제합니다.

RpcGetAuthorizationContextForClient 함수를 사용하여 관찰되는 성능 향상은 검사 또는 자체에 대한 되돌리기 이전의 가장 또는 액세스 방법과 비교할 때 다음과 같은 요인에 따라 달라집니다.

  • 지정된 클라이언트 ID에 대해 함수가 호출되는 횟수입니다.
  • 프로토콜 시퀀스 및 ID 추적이 함수 호출에 적용됩니다.
동일한 클라이언트 ID에 대한 RpcGetAuthorizationContextForClient 함수에 대한 후속 호출은 비용이 매우 낮습니다. 이 효율성은 캐시되는 이전 문의 결과와 가능한 한 캐시에서 반환되는 응답에 의해 달성됩니다.

정적 ID 추적을 사용하여 ncalrpc를 호출하면 동적 ID 추적을 사용하여 ncalrpc를 호출하는 것보다 RpcGetAuthorizationContextForClient 함수를 더 빠르게 실행합니다. id 추적이 정적인지 동적인지에 관계없이 지정된 프로토콜 시퀀스에 대해 거의 동일한 속도로 ncacn_*를 통한 호출이 실행됩니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows XP [데스크톱 앱만 해당]
지원되는 최소 서버 Windows Server 2003 [데스크톱 앱만 해당]
대상 플랫폼 Windows
헤더 rpcasync.h(Rpc.h 포함)
라이브러리 Rpcrt4.lib
DLL Rpcrt4.dll

추가 정보

클라이언트/서버 Access Control 함수

Luid

RPC 반환 값

RpcFreeAuthorizationContext

RpcImpersonateClient