Calidad de servicio (RPC)
Los programas cliente pueden usar la función RpcBindingSetAuthInfoEx en lugar de la función RpcBindingSetAuthInfo para crear un enlace autenticado. Si lo hacen, pasan un puntero a una estructura RPC_SECURITY_QOS como parámetro final de RpcBindingSetAuthInfoEx. Esta estructura contiene información sobre la calidad del servicio. Los programas cliente también pueden especificar el seguimiento de identidades y seleccionar el tipo de suplantación.
Use el miembro Capabilities de la estructura RPC_SECURITY_QOS para establecer qué partes de la aplicación cliente/servidor se autentican. Si se selecciona RPC_C_QOS_CAPABILITIES_DEFAULT, la biblioteca en tiempo de ejecución rpc autentica al cliente o servidor según el valor predeterminado para el SSP. De forma predeterminada, el SSP del protocolo Kerberos autentica tanto el cliente como el servidor. El valor predeterminado para todos los demás SSP que proporciona Microsoft es autenticar el cliente en el servidor, pero no autenticar el servidor en el cliente.
Si el cliente y el servidor siempre deben autenticarse entre sí, establezca el miembro Capabilities de la estructura RPC_SECURITY_QOS en RPC_C_QOS_CAPABILITIES_MUTUAL_AUTH. Es posible que algunos proveedores de seguridad no admitan la autenticación mutua. Si se especifica RPC_C_QOS_CAPABILITIES_MUTUAL_AUTH para estos proveedores de seguridad, se devuelve un error cuando se realiza una llamada a procedimiento remoto. Al usar el SSP de SCHANNEL, también es posible establecer el miembro Capabilities en RPC_C_QOS_CAPABILITIES_ANY_AUTHORITY. Esta constante especifica que el SSP validará la llamada a procedimiento remoto aunque la entidad de certificación que emitió el certificado de autenticación del cliente no esté en el almacén de certificados raíz del SSP. El valor predeterminado es rechazar el certificado si el SSP no reconoce la entidad de certificación. La entidad de certificación es una empresa u organización independiente, como VeriSign, que emite certificados de autenticación.
Las aplicaciones también pueden establecer el seguimiento de identidades que usa la biblioteca en tiempo de ejecución rpc. Los programas suelen usar el seguimiento de identidades estáticos. Con el seguimiento estático, las credenciales del cliente se establecen cuando llama a la función RpcBindingSetAuthInfo . A continuación, la biblioteca en tiempo de ejecución rpc usa esas credenciales para todas las llamadas RPC en el enlace, independientemente de los cambios en la identidad del subproceso que realiza la llamada o el proceso de llamada. Las aplicaciones también pueden seleccionar el seguimiento dinámico de identidades. El seguimiento dinámico de identidades indica a la biblioteca en tiempo de ejecución rpc que use las credenciales del subproceso que realiza la llamada en el momento de cada llamada, en lugar del identificador de enlace. El seguimiento de identidades predeterminado es estático.
Si la identidad del cliente no va a cambiar, el seguimiento de identidades estáticas puede tener mejores características de rendimiento y puede ahorrar el tiempo de ejecución de RPC para comprobar cada vez si la identidad del subproceso que realiza la llamada es la misma que la identidad dada al sistema de seguridad. Si la identidad del subproceso que realiza la llamada puede cambiar entre llamadas y el servidor debe reconocer esos cambios, es mejor especificar el seguimiento dinámico de identidades: el tiempo de ejecución rpc realiza un seguimiento silencioso y eficaz de la identidad y, si la identidad cambia, administra ese cambio en su nombre.
Nota
En el caso de las llamadas ncalrpc , el seguimiento de identidades estáticos y dinámicos tiene características de rendimiento diferentes y, en función de las circunstancias, puede ser más rápido.
Como parte de la especificación de QOS, el programa cliente también puede establecer el tipo de suplantación que un programa de servidor puede realizar en su nombre. Para obtener más información, vea Suplantación de cliente.
El campo número de versión de la estructura de RPC_SECURITY_QOS siempre debe establecerse en RPC_C_SECURITY_QOS_VERSION.