Compartir a través de


estructura de RPC_SECURITY_QOS (rpcdce.h)

La estructura de RPC_SECURITY_QOS define la configuración de calidad de servicio de seguridad en un identificador de enlace. Vea Comentarios sobre la disponibilidad de versiones en las ediciones de Windows.

Sintaxis

typedef struct _RPC_SECURITY_QOS {
  unsigned long Version;
  unsigned long Capabilities;
  unsigned long IdentityTracking;
  unsigned long ImpersonationType;
} RPC_SECURITY_QOS, *PRPC_SECURITY_QOS;

Miembros

Version

Versión de la estructura RPC_SECURITY_QOS que se usa. En este tema se documenta la versión 1 de la estructura de RPC_SECURITY_QOS . Consulte RPC_SECURITY_QOS_V2, RPC_SECURITY_QOS_V3, RPC_SECURITY_QOS_V4 y RPC_SECURITY_QOS_V5 para otras versiones.

Capabilities

Servicios de seguridad que se proporcionan a la aplicación. Las funcionalidades son un conjunto de marcas que se pueden combinar mediante el operador OR bit a bit.

Valor Significado
RPC_C_QOS_CAPABILITIES_DEFAULT
Se usa cuando no se necesitan funcionalidades específicas del proveedor.
RPC_C_QOS_CAPABILITIES_MUTUAL_AUTH
Especificar esta marca hace que el tiempo de ejecución de RPC solicite la autenticación mutua del proveedor de seguridad. Algunos proveedores de seguridad no admiten la autenticación mutua. Si el proveedor de seguridad no admite la autenticación mutua o no se puede establecer la identidad del servidor, no se puede establecer una llamada de procedimiento remoto a dicho servidor con un error RPC_S_SEC_PKG_ERROR.
Nota RPC se basa en el SSP para indicar qué opciones de seguridad se negociaron correctamente; RPC a su vez produce un error en cualquier llamada para la que el proveedor de servicios de seguridad (SSP) notifica que no pudo negociar una opción. Sin embargo, se sabe que algunos proveedores de seguridad notifican la negociación correcta de una opción incluso cuando la opción no se negoció correctamente. Por ejemplo, NTLM notificará una negociación correcta de la autenticación mutua por motivos de compatibilidad con versiones anteriores, aunque no admita la autenticación mutua. Compruebe con el SSP concreto que se usa para determinar su comportamiento con respecto a las opciones de seguridad.
 
RPC_C_QOS_CAPABILITIES_MAKE_FULLSIC
No implementado actualmente.
RPC_C_QOS_CAPABILITIES_ANY_AUTHORITY
Acepta las credenciales del cliente incluso si la entidad de certificación (CA) no está en la lista de CA de confianza del servidor. Esta constante solo la usa el SSP de SCHANNEL.
RPC_C_QOS_CAPABILITIES_IGNORE_DELEGATE_FAILURE
Cuando se especifica, esta marca dirige el tiempo de ejecución rpc en el cliente para omitir un error para establecer un contexto de seguridad que admita la delegación. Normalmente, si el cliente solicita delegación y el sistema de seguridad no puede establecer un contexto de seguridad que admita la delegación, se devuelve el error RPC_S_SEC_PKG_ERROR; cuando se especifica esta marca, no se devuelve ningún error.
Nota No se admite en Windows XP y en ediciones de cliente anteriores, no admitidas en las ediciones de windows 2000 y versiones anteriores del servidor.
 
RPC_C_QOS_CAPABILITIES_LOCAL_MA_HINT
Esta marca especifica a RPC que el servidor es local para la máquina que realiza la llamada RPC. En esta situación RPC indica al asignador de puntos de conexión que seleccione solo los puntos de conexión registrados por la entidad de seguridad especificada en los miembros ServerPrincName o Sid (estos miembros están disponibles en RPC_SECURITY_QOS_V3, RPC_SECURITY_QOS_V4 y solo RPC_SECURITY_QOS_V5 ). Vea Comentarios para obtener más información.
Nota No se admite en Windows XP y en ediciones de cliente anteriores, no admitidas en las ediciones de windows 2000 y versiones anteriores del servidor.
 
RPC_C_QOS_CAPABILITIES_SCHANNEL_FULL_AUTH_IDENTITY
Si se establece, el tiempo de ejecución de RPC usa el SSP de SChannel para realizar la autenticación basada en tarjetas inteligentes sin mostrar un cuadro de diálogo de solicitud de PIN por parte del proveedor de servicios criptográficos (CSP).

En la llamada a RpcBindingSetAuthInfoEx, el parámetro AuthIdentity debe ser una estructura SEC_WINNT_AUTH_IDENTITY cuyos miembros contengan lo siguiente:

  • El usuario debe ser un puntero a una estructura de SCHANNEL_CRED
  • UserLength debe ser 0
  • El dominio debe ser NULL
  • DomainLength debe ser 0
  • La contraseña puede ser el PIN del certificado o NULL. Si Password es el PIN, PasswordLength debe ser la longitud correcta para el PIN y, si Password es NULL, PasswordLength debe ser 0.
Si la marca de RPC_C_QOS_CAPABILITIES_SCHANNEL_FULL_AUTH_IDENTITY se usa para cualquier SSP que no sea SChannel o si los miembros de SEC_WINNT_AUTH_IDENTITY no se ajustan a lo anterior, RpcBindingSetAuthInfoEx devolverá RPC_S_INVALID_ARG.

IdentityTracking

Establece el modo de seguimiento de contexto. Debe establecerse en uno de los valores que se muestran en la tabla siguiente.

Valor Significado
RPC_C_QOS_IDENTITY_STATIC
El contexto de seguridad solo se crea una vez y nunca se revisa durante toda la comunicación, incluso si el lado cliente lo cambia. Este es el comportamiento predeterminado si no se especifica RPC_SECURITY_QOS.
RPC_C_QOS_IDENTITY_DYNAMIC
El contexto se revisa cada vez que se cambia el valor de ModifiedId en el token del cliente. Todos los protocolos usan ModifiedId (consulte la nota).

Windows 2000: Todos los protocolos remotos (todos los protocolos distintos de ncalrpc) usan AuthenticationID, también conocido como LogonId, para realizar un seguimiento de los cambios en la identidad del cliente. El protocolo ncalrpc usa ModifiedId.

ImpersonationType

Nivel en el que el proceso de servidor puede suplantar al cliente.

Valor Significado
RPC_C_IMP_LEVEL_DEFAULT
Usa el nivel de suplantación predeterminado.
RPC_C_IMP_LEVEL_ANONYMOUS
El cliente no proporciona información de identificación al servidor. El servidor no puede suplantar al cliente ni identificar al cliente. Muchos servidores rechazan las llamadas con este tipo de suplantación.
Nota Algunos proveedores de seguridad pueden tratar este tipo de suplantación como equivalente a RPC_C_IMP_LEVEL_IMPERSONATE. Desde los proveedores de seguridad de Windows, esto se realiza RPC_C_AUTHN_WINNT solo cuando se usa con secuencias de protocolo que no sean ncalrpc. También lo hace RPC_C_AUTHN_GSS_NEGOTIATE, RPC_C_AUTHN_GSS_SCHANNEL y RPC_C_AUTHN_GSS_KERBEROS.
 
RPC_C_IMP_LEVEL_IDENTIFY
El servidor puede obtener la identidad del cliente y suplantar al cliente para realizar comprobaciones de lista de Access Control (ACL), pero no puede suplantar al cliente. Consulte Niveles de suplantación para obtener más información.
Nota Algunos proveedores de seguridad pueden tratar este tipo de suplantación como equivalente a RPC_C_IMP_LEVEL_IMPERSONATE. Desde los proveedores de seguridad de Windows, esto se realiza RPC_C_AUTHN_WINNT solo cuando se usa con secuencias de protocolo que no sean ncalrpc. También lo hace RPC_C_AUTHN_GSS_NEGOTIATE, RPC_C_AUTHN_GSS_SCHANNEL y RPC_C_AUTHN_GSS_KERBEROS.
 
RPC_C_IMP_LEVEL_IMPERSONATE
El servidor puede suplantar el contexto de seguridad del cliente en su sistema local, pero no en sistemas remotos.
RPC_C_IMP_LEVEL_DELEGATE
El servidor puede suplantar el contexto de seguridad del cliente mientras actúa en su nombre. El servidor también puede realizar llamadas salientes a otros servidores mientras actúa en nombre del cliente. El servidor puede usar el contexto de seguridad del cliente en otras máquinas para acceder a recursos locales y remotos como cliente.

Comentarios

En la lista siguiente se define la disponibilidad de las versiones de QOS en varios sistemas operativos Windows:

  • Versión 1: Windows 2000 y versiones posteriores.
  • Versión 2: Windows XP con Service Pack 1 (SP1) y versiones posteriores.
  • Versión 3: Windows Server 2003 y versiones posteriores.
  • Versión 4: Windows Vista y versiones posteriores.
  • Versión 5: Windows 8 y versiones posteriores.
Las ediciones de Windows también admiten versiones de nivel inferior. Por ejemplo, Windows Server 2003 admite la versión 3, pero también admite las versiones 1 y 2.

Las funciones de seguridad del lado cliente RpcBindingInqAuthInfoEx y RpcBindingSetAuthInfo usan la estructura de RPC_SECURITY_QOS para consultar o establecer la calidad de seguridad del servicio para un identificador de enlace.

RPC admite la sugerencia de RPC_C_QOS_CAPABILITIES_LOCAL_MA_HINT. Esta sugerencia solo se usa cuando se usan puntos de conexión dinámicos y autenticación mutua. Además, no se admite para las secuencias de protocolo ncadg_ . Si esta marca se usa para una secuencia de protocolo de ncadg_ o sin usar la autenticación mutua, se devuelve RPC_S_INVALID_ARG desde la llamada de función RpcBindingSetAuthInfoEx . Esta marca está diseñada para evitar un ataque por denegación de servicio. El uso de esta marca obliga al tiempo de ejecución de RPC a pedir al asignador de puntos de conexión solo los puntos de conexión registrados por la entidad de seguridad especificada en los miembros ServerPrincName o Sid . Esto impide que un atacante de la máquina local intente engañar al cliente RPC para conectarse a un punto de conexión de suplantación de identidad que ha registrado en el asignador de puntos de conexión. Tenga en cuenta que, dado que el ataque solo es local (por ejemplo, desde una máquina de terminal server con muchos usuarios), la marca también funciona solo para las llamadas RPC realizadas localmente.

Nota Algunos proveedores de seguridad, como Kerberos, admiten el tipo de suplantación de delegación. En las ediciones de Windows que admiten el tipo de suplantación de delegación, si el cliente ha solicitado la delegación, pero el proveedor de seguridad no puede proporcionarla, se produce un error en la llamada a PRC_S_SEC_PKG_ERROR a menos que se especifique la marca RPC_C_QOS_CAPABILITIES_IGNORE_DELEGATE_FAILURE.
 

Requisitos

Requisito Value
Cliente mínimo compatible Windows 2000 Professional [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows 2000 Server [solo aplicaciones de escritorio]
Encabezado rpcdce.h (incluir Rpc.h)

Consulte también

RPC_SECURITY_QOS_V2

RPC_SECURITY_QOS_V3

RPC_SECURITY_QOS_V4

RPC_SECURITY_QOS_V5

RpcBindingInqAuthInfoEx

RpcBindingSetAuthInfoEx