다음을 통해 공유


RPC(서비스 품질)

클라이언트 프로그램은 RpcBindingSetAuthInfo 함수 대신 RpcBindingSetAuthInfoEx 함수를 사용하여 인증된 바인딩을 만들 수 있습니다. 이렇게 하면 RPC_SECURITY_QOS 구조체에 대한 포인터를 RpcBindingSetAuthInfoEx의 최종 매개 변수로 전달합니다. 이 구조에는 서비스 품질에 대한 정보가 포함되어 있습니다. 클라이언트 프로그램은 ID 추적을 지정하고 가장 유형을 선택할 수도 있습니다.

RPC_SECURITY_QOS 구조의 Capabilities 멤버를 사용하여 클라이언트/서버 애플리케이션의 인증 부분을 설정합니다. RPC_C_QOS_CAPABILITIES_DEFAULT 선택하면 RPC 런타임 라이브러리는 SSP의 기본값에 따라 클라이언트 또는 서버를 인증합니다. 기본적으로 Kerberos 프로토콜 SSP는 클라이언트와 서버를 모두 인증합니다. Microsoft에서 제공하는 다른 모든 SSP의 기본값은 클라이언트를 서버에 인증하는 것이지만 클라이언트에 대한 서버를 인증하지 않는 것입니다.

클라이언트와 서버가 항상 서로 인증해야 하는 경우 RPC_SECURITY_QOS 구조체의 Capabilities 멤버를 RPC_C_QOS_CAPABILITIES_MUTUAL_AUTH 설정합니다. 일부 보안 공급자는 상호 인증을 지원하지 않을 수 있습니다. 이러한 보안 공급자에 대해 RPC_C_QOS_CAPABILITIES_MUTUAL_AUTH 지정하면 원격 프로시저 호출이 수행될 때 오류가 반환됩니다. SCHANNEL SSP를 사용하는 경우 Capabilities 멤버를 RPC_C_QOS_CAPABILITIES_ANY_AUTHORITY 설정할 수도 있습니다. 이 상수는 클라이언트의 인증 인증서를 발급한 인증 기관이 SSP의 루트 인증서 저장소에 없는 경우에도 SSP가 원격 프로시저 호출의 유효성을 검사하도록 지정합니다. 기본값은 SSP가 인증 기관을 인식하지 못하는 경우 인증서를 거부하는 것입니다. 인증 기관은 인증 인증서를 발급하는 독립 회사 또는 organization(예: VeriSign)입니다.

애플리케이션은 RPC 런타임 라이브러리에서 사용하는 ID 추적을 설정할 수도 있습니다. 프로그램은 일반적으로 정적 ID 추적을 사용합니다. 정적 추적을 사용하면 클라이언트의 자격 증명이 RpcBindingSetAuthInfo 함수를 호출할 때 설정됩니다. 그런 다음, RPC 런타임 라이브러리는 호출 스레드 또는 호출 프로세스의 ID 변경 내용에 관계없이 바인딩의 모든 RPC 호출에 해당 자격 증명을 사용합니다. 애플리케이션은 동적 ID 추적을 선택할 수도 있습니다. 동적 ID 추적은 바인딩 핸들이 아닌 각 호출 시 호출 스레드의 자격 증명을 사용하도록 RPC 런타임 라이브러리에 지시합니다. 기본 ID 추적은 정적입니다.

클라이언트의 ID가 변경되지 않을 경우 정적 ID 추적은 더 나은 성능 특성을 가질 수 있으며, 호출 스레드의 ID가 보안 시스템에 지정된 ID와 동일한지 매번 검사하지 않도록 RPC 런타임을 절약할 수 있습니다. 호출 스레드의 ID가 호출 간에 변경될 수 있고 서버가 이러한 변경 내용을 인식해야 하는 경우 동적 ID 추적을 지정하는 것이 가장 좋습니다. RPC 런타임은 사용자를 위해 ID를 조용하고 효율적으로 추적하고 ID가 변경되면 사용자를 대신하여 해당 변경 내용을 관리합니다.

참고

ncalrpc 호출의 경우 정적 및 동적 ID 추적은 성능 특성이 다르며 상황에 따라 속도가 더 빠를 수 있습니다.

 

QOS 사양의 일부로 클라이언트 프로그램은 서버 프로그램이 대신 수행할 수 있는 가장 유형을 설정할 수도 있습니다. 자세한 내용은 클라이언트 가장을 참조하세요.

RPC_SECURITY_QOS 구조체의 버전 번호 필드는 항상 RPC_C_SECURITY_QOS_VERSION 설정해야 합니다.