Funzione RpcGetAuthorizationContextForClient (rpcasync.h)

La funzione RpcGetAuthorizationContextForClient restituisce il contesto Authz per un client RPC che può essere usato con le funzioni Authz per l'autenticazione ad alte prestazioni. Supportato solo per le sequenze di protocollo ncalrpc e ncacn_* .

Sintassi

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

Parametri

[in, optional] ClientBinding

Handle di associazione nel server che rappresenta un'associazione a un client. Il server rappresenta il client indicato da questo handle. Se viene specificato un valore pari a zero, il server rappresenta il client gestito da questo thread del server.

[in] ImpersonateOnReturn

Indirizza la funzione a rappresentare il client in caso di restituzione e quindi restituisce una struttura AUTHZ_CLIENT_CONTEXT_HANDLE . Impostare questo parametro su diverso da zero per rappresentare il client. Vedere la sezione Osservazioni.

[in] Reserved1

Riservato. Deve essere Null.

[in, optional] pExpirationTime

Puntatore alla data e all'ora di scadenza del token. Se non viene passato alcun valore, il token non scade mai. L'ora di scadenza non è attualmente applicata.

[in] Reserved2

Riservato. Deve essere una struttura LUID con ogni membro impostato su zero.

[in] Reserved3

Riservato. Deve essere zero.

[in] Reserved4

Riservato. Deve essere Null.

[out] pAuthzClientContext

Puntatore a una struttura AUTHZ_CLIENT_CONTEXT_HANDLE che può essere passata direttamente alle funzioni Authz. Se la funzione ha esito negativo, il contenuto di questo parametro non è definito.

Valore restituito

Valore Significato
RPC_S_OK
La chiamata ha avuto esito positivo.
RERROR_INVALID_PARAMETER
Un parametro riservato è diverso dal valore prescritto.
RPC_S_NO_CONTEXT_AVAILABLE
Il client RPC non è stato autenticato correttamente.
 

L'errore restituisce un codice di errore RPC_S_* o un codice di errore di Windows. Le informazioni estese sugli errori sono disponibili tramite meccanismi di recupero del codice di errore RPC o Windows standard. Per un elenco di codici di errore validi, vedere Valori restituiti RPC.

Commenti

La funzione RpcGetAuthorizationContextForClient può essere chiamata nello stesso contesto della funzione RpcImpersonateClient . Tutte le funzioni che rappresentano il controllo per determinare se il chiamante ha il privilegio SeImpersonatePrivilege. Se il chiamante ha SeImpersonatePrivilege o se l'identità autenticata è uguale al chiamante, la rappresentazione richiesta è consentita. In caso contrario, la rappresentazione ha esito positivo solo a livello di identificazione.

Nota Il privilegio SeImpersonatePrivilege non è supportato fino a quando Windows XP con Service Pack 2 (SP2).

La funzione RpcGetAuthorizationContextForClient è supportata solo per le sequenze di protocollo ncalrpc e ncacn_* e non è supportata nelle named pipe che implementano solo la sicurezza del trasporto.

La funzione RpcGetAuthorizationContextForClient è thread-safe e può essere chiamata da più thread. Il contesto restituito in pAuthzClientContext è indipendente dalla chiamata di funzione e può essere usato successivamente al completamento. Il chiamante è responsabile della liberazione del contesto con una chiamata alla funzione RpcFreeAuthorizationContext .

Il miglioramento delle prestazioni osservato tramite la funzione RpcGetAuthorizationContextForClient , rispetto ai metodi precedenti di rappresentazione o controllo di accesso o ripristino automatico, dipende dai fattori seguenti:

  • Quante volte viene chiamata la funzione per una determinata identità client.
  • Sequenza di protocollo e rilevamento delle identità in vigore per la chiamata di funzione.
Le chiamate successive alla funzione RpcGetAuthorizationContextForClient per la stessa identità client hanno un costo estremamente basso. Questa efficienza viene ottenuta dai risultati delle richieste precedenti memorizzate nella cache e dalle risposte restituite dalla cache quando possibile.

Le chiamate su ncalrpc con rilevamento delle identità statiche eseguono la funzione RpcGetAuthorizationContextForClient più velocemente rispetto alle chiamate su ncalrpc con il rilevamento dinamico delle identità. Le chiamate su ncacn_* vengono eseguite approssimativamente con la stessa velocità per una determinata sequenza di protocollo, indipendentemente dal fatto che il rilevamento delle identità sia statico o dinamico.

Requisiti

Requisito Valore
Client minimo supportato Windows XP [solo app desktop]
Server minimo supportato Windows Server 2003 [solo app desktop]
Piattaforma di destinazione Windows
Intestazione rpcasync.h (include Rpc.h)
Libreria Rpcrt4.lib
DLL Rpcrt4.dll

Vedi anche

Funzioni di Controllo di accesso client/server

LUID

Valori restituiti RPC

RpcFreeAuthorizationContext

RpcImpersonateClient