estructura de RPC_BINDING_HANDLE_SECURITY_V1_A (rpcdce.h)

La estructura RPC_BINDING_HANDLE_SECURITY_V1 contiene las opciones de seguridad básicas con las que crear un identificador de enlace RPC.

Sintaxis

typedef struct _RPC_BINDING_HANDLE_SECURITY_V1_A {
  unsigned long             Version;
  unsigned char             *ServerPrincName;
  unsigned long             AuthnLevel;
  unsigned long             AuthnSvc;
  SEC_WINNT_AUTH_IDENTITY_A *AuthIdentity;
  RPC_SECURITY_QOS          *SecurityQos;
} RPC_BINDING_HANDLE_SECURITY_V1_A, *PRPC_BINDING_HANDLE_SECURITY_V1_A;

Miembros

Version

Versión de esta estructura. Para RPC_BINDING_HANDLE_SECURITY_V1 debe establecerse en 1.

ServerPrincName

Puntero a una cadena que contiene el nombre principal del servidor al que hace referencia el identificador de enlace. El contenido del nombre y su sintaxis se definen mediante el servicio de autenticación en uso.

AuthnLevel

Nivel de autenticación que se va a realizar en las llamadas a procedimientos remotos realizadas mediante este identificador de enlace. Para obtener una lista de los niveles de autenticación compatibles con RPC, consulte Constantes de nivel de autenticación.

Si AuthnSvc está establecido en RPC_C_AUTHN_NONE, este miembro también debe establecerse en RPC_C_AUTHN_NONE.

AuthnSvc

Servicio de autenticación que se va a usar al enlazar.

Especifique RPC_C_AUTHN_NONE para desactivar la autenticación para las llamadas a procedimientos remotos realizadas mediante el identificador de enlace.

Si se especifica RPC_C_AUTHN_DEFAULT, la biblioteca en tiempo de ejecución rpc usa el servicio de autenticación de RPC_C_AUTHN_WINNT para las llamadas a procedimientos remotos realizadas mediante el identificador de enlace.

Si AuthnLevel está establecido en RPC_C_AUTHN_NONE, este miembro también debe establecerse en RPC_C_AUTHN_NONE.

AuthIdentity

SEC_WINNT_AUTH_IDENTITY estructura que contiene las credenciales de autenticación y autorización del cliente adecuadas para el servicio de autenticación y autorización seleccionados.

SecurityQos

RPC_SECURITY_QOS estructura que contiene la configuración de calidad de servicio de seguridad para el identificador de enlace.

Nota Para obtener una lista de los servicios de autenticación compatibles con RPC, consulte Authentication-Service Constants(Constantes de servicio de autenticación).
 

Comentarios

Si esta estructura no se pasa a RpcBindingCreate , es decir, si el parámetro Security de RpcBindingCreate se establece en NULL , se asumen los siguientes comportamientos de seguridad predeterminados:

  • Para la secuencia de protocolo ncalrpc (RPC local), RPC usará la seguridad de nivel de transporte. Esto significa que RPC usará los mecanismos de seguridad ofrecidos por el kernel de Windows para proporcionar seguridad y RPC no autenticará el servidor, ya que se conecta mediante la identidad del subproceso actual. En este caso, el seguimiento de identidades es estático, el tipo de suplantación se establece en "Suplantar" y el nivel de autenticación se establece en "Privacidad".
  • Para la secuencia de protocolos ncacn_np, RPC también usará la seguridad de nivel de transporte. Si la llamada es remota, RPC usa los mecanismos de seguridad proporcionados por el redirector del sistema de archivos de Windows y no hay autenticación mutua. En este caso, la identidad es la identidad del subproceso actual, el estado de seguimiento de identidades es estático, el tipo de suplantación se establece en "Suplantar" y el nivel de autenticación viene determinado por las directivas de la máquina remota.

    Si la llamada es local, RPC usa los mecanismos de seguridad proporcionados por el sistema de archivos de canalización con nombre (NPFS) y tampoco hay autenticación mutua. En este caso, la identidad es la identidad del subproceso actual o cualquier identidad establecida mediante el comando "net use" para el servidor. El estado de seguimiento de identidades es dinámico, el tipo de suplantación se establece en "Suplantar" y el nivel de autenticación se establece en "Privacidad".

  • Para las secuencias de protocolo ncacn_ip_tcp, ncacn_ip_udp y ncacn_http, no se usa ninguna seguridad cuando Security se establece en NULL. El servidor no realizará la suplantación y todos los datos se enviarán como texto no cifrado. Para proporcionar la máxima protección para los datos, la aplicación siempre debe proporcionar datos de seguridad.

En la tabla siguiente se resume la configuración de seguridad predeterminada de las distintas secuencias de protocolo si el parámetro Security de RpcBindingCreate se establece en NULL.

Configuración de seguridad predeterminada ncalrpc ncacn_np local ncacn_np remoto ncacn_ip_tcp, ncacn_ip_udp y ncacn_http
Mecanismo de seguridad Windows Kernel NPFS Redirector del sistema de archivos None
Nivel de autenticación Privacidad Privacidad Dependiente de la directiva de servidor None
¿Autenticación mutua? No No No No
Tipo de suplantación Impersonate Impersonate Impersonate N/D
Tipo de seguimiento de identidades Estático Dinámica estática N/D
¿Solo efectivo? No N/D N/D
Identidad de llamada Subproceso actual Subproceso actual Configuración actual de subproceso o "net use" N/D
 
Nota Si crea el identificador de enlace llamando a la API RpcBindingFromStringBinding , el seguimiento de identidad predeterminado para ncalrpc en ausencia de una configuración de seguridad específica es dinámica.

Si crea un identificador de enlace rápido mediante una llamada a la API RpcBindingCreate , el seguimiento de identidades predeterminado para ncalrpc en ausencia de una configuración de seguridad específica es estática.

Debe tener en cuenta las diferencias en estas dos API si cambia entre ellas en la aplicación.

Una vez creado el identificador de enlace, se pueden usar las API RpcBindingSetAuthInfo y RpcBindingSetAuthInfoEx para cambiar la configuración del conjunto de identificadores de enlace con esta estructura.

 

Requisitos

Requisito Value
Cliente mínimo compatible Windows Vista [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2008 [solo aplicaciones de escritorio]
Encabezado rpcdce.h (include Rpc.h)

Consulte también

RPC_BINDING_HANDLE

RpcBindingBind

RpcBindingCreate