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 |
---|---|
|
La llamada se realizó correctamente. |
|
Un parámetro reservado es diferente de su valor prescrito. |
|
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 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 |