Función RpcGetAuthorizationContextForClient (rpcasync.h)

La función RpcGetAuthorizationContextForClient devuelve el contexto authz de un cliente RPC que se puede usar con funciones authz para la autenticación de alto rendimiento. Solo se admite para secuencias de protocolo ncalrpc y ncacn_* .

Sintaxis

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
);

Parámetros

[in, optional] ClientBinding

Manipulador de enlace en el servidor que representa un enlace a un cliente. El servidor suplanta al cliente indicado por este identificador. Si se especifica un valor de cero, el servidor suplanta al cliente que sirve este subproceso de servidor.

[in] ImpersonateOnReturn

Dirige la función para suplantar al cliente de vuelta y, a continuación, devuelve una estructura de AUTHZ_CLIENT_CONTEXT_HANDLE . Establezca este parámetro en distinto de cero para suplantar al cliente. Vea la sección Comentarios.

[in] Reserved1

Reservado. Debe ser NULL.

[in, optional] pExpirationTime

Puntero a la fecha y hora de expiración del token. Si no se pasa ningún valor, el token nunca expira. La hora de expiración no se aplica actualmente.

[in] Reserved2

Reservado. Debe ser una estructura LUID con cada miembro establecido en cero.

[in] Reserved3

Reservado. Debe ser cero.

[in] Reserved4

Reservado. Debe ser NULL.

[out] pAuthzClientContext

Puntero a una estructura de AUTHZ_CLIENT_CONTEXT_HANDLE que se puede pasar directamente a funciones authz. Si se produce un error en la función, el contenido de este parámetro no está definido.

Valor devuelto

Valor Significado
RPC_S_OK
La llamada se realizó correctamente.
RERROR_INVALID_PARAMETER
Un parámetro reservado es diferente de su valor prescrito.
RPC_S_NO_CONTEXT_AVAILABLE
El cliente RPC no se ha autenticado correctamente.
 

Error devuelve un código de error RPC_S_* o un código de error de Windows. La información de error extendida está disponible a través de los mecanismos estándar de recuperación de código de error de RPC o Windows. Para obtener una lista de códigos de error válidos, vea Rpc Return Values.

Comentarios

Se puede llamar a la función RpcGetAuthorizationContextForClient en el mismo contexto que la función RpcImpersonateClient . Todas las funciones que suplantan la comprobación para determinar si el autor de la llamada tiene el privilegio SeImpersonatePrivilege. Si el autor de la llamada tiene SeImpersonatePrivilege, o si la identidad autenticada es la misma que el autor de la llamada, se permite la suplantación solicitada. De lo contrario, la suplantación solo se realiza en el nivel De identificación.

Nota El privilegio SeImpersonatePrivilege no se admite hasta Windows XP con Service Pack 2 (SP2).

La función RpcGetAuthorizationContextForClient solo es compatible con las secuencias de protocolo ncalrpc y ncacn_* y no se admite en canalizaciones con nombre que solo implementan la seguridad de transporte.

La función RpcGetAuthorizationContextForClient es segura para subprocesos y se puede llamar desde varios subprocesos. El contexto devuelto en pAuthzClientContext es independiente de la llamada de función y se puede usar después de su finalización. El autor de la llamada es responsable de liberar el contexto con una llamada a la función RpcFreeAuthorizationContext .

La mejora del rendimiento observada mediante el uso de la función RpcGetAuthorizationContextForClient , en comparación con los métodos anteriores de suplantación o comprobación de acceso o reversión a sí mismo, dependen de los siguientes factores:

  • Cuántas veces se llama a la función para una identidad de cliente determinada.
  • Secuencia de protocolo y seguimiento de identidades en vigor para la llamada de función.
Las llamadas posteriores a la función RpcGetAuthorizationContextForClient para la misma identidad de cliente tienen un costo extremadamente bajo. Esta eficacia se logra mediante los resultados de las consultas anteriores que se almacenan en caché y las respuestas que se devuelven de la memoria caché siempre que sea posible.

Las llamadas a través de ncalrpc con seguimiento de identidades estáticos ejecutan la función RpcGetAuthorizationContextForClient más rápido que las llamadas a través de ncalrpc con seguimiento dinámico de identidades. Las llamadas a través de ncacn_* se ejecutan con aproximadamente la misma velocidad para una secuencia de protocolo determinada, independientemente de si el seguimiento de identidades es estático o dinámico.

Requisitos

Requisito Value
Cliente mínimo compatible Windows XP [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2003 [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado rpcasync.h (include Rpc.h)
Library Rpcrt4.lib
Archivo DLL Rpcrt4.dll

Consulte también

Funciones de cliente/servidor Access Control

LUID

Valores devueltos de RPC

RpcFreeAuthorizationContext

RpcImpersonateClient