Qualità del servizio (RPC)
I programmi client possono usare la funzione RpcBindingSetAuthInfoEx anziché la funzione RpcBindingSetAuthInfo per creare un'associazione autenticata. In tal caso, passano un puntatore a una struttura RPC_SECURITY_QOS come parametro finale di RpcBindingSetAuthInfoEx. Questa struttura contiene informazioni sulla qualità del servizio. I programmi client possono anche specificare il rilevamento delle identità e selezionare il tipo di rappresentazione.
Usare il membro Capabilities della struttura RPC_SECURITY_QOS per impostare le parti dell'applicazione client/server autenticate. Se RPC_C_QOS_CAPABILITIES_DEFAULT è selezionato, la libreria di runtime RPC autentica il client o il server in base all'impostazione predefinita per il provider di servizi condivisi. Per impostazione predefinita, il provider di servizi condivisi del protocollo Kerberos autentica sia il client che il server. L'impostazione predefinita per tutti gli altri provider di servizi di configurazione forniti da Microsoft consiste nell'autenticare il client nel server, ma non per autenticare il server nel client.
Se il client e il server devono sempre eseguire l'autenticazione tra loro, impostare il membro Capabilities della struttura RPC_SECURITY_QOS su RPC_C_QOS_CAPABILITIES_MUTUAL_AUTH. Alcuni provider di sicurezza potrebbero non supportare l'autenticazione reciproca. Se RPC_C_QOS_CAPABILITIES_MUTUAL_AUTH viene specificato per tali provider di sicurezza, viene restituito un errore quando viene eseguita una chiamata di procedura remota. Quando si usa il provider di servizi condivisi SCHANNEL, è anche possibile impostare il membro Capabilities su RPC_C_QOS_CAPABILITIES_ANY_AUTHORITY. Questa costante specifica che il provider di servizi condivisi convalida la chiamata alla procedura remota anche se l'autorità di certificazione che ha emesso il certificato di autenticazione del client non si trova nell'archivio certificati radice del provider di servizi condivisi. L'impostazione predefinita consiste nel rifiutare il certificato se il provider di servizi condivisi non riconosce l'autorità di certificazione. L'autorità di certificazione è una società o un'organizzazione indipendente, ad esempio VeriSign, che rilascia i certificati di autenticazione.
Le applicazioni possono anche impostare il rilevamento delle identità usato dalla libreria di runtime RPC. I programmi usano in genere il rilevamento delle identità statico. Con il rilevamento statico, le credenziali del client vengono impostate quando chiama la funzione RpcBindingSetAuthInfo . La libreria di runtime RPC usa quindi tali credenziali per tutte le chiamate RPC nell'associazione, indipendentemente dalle modifiche apportate all'identità del thread chiamante o del processo chiamante. Le applicazioni possono anche selezionare il rilevamento delle identità dinamiche. Il rilevamento dinamico delle identità indica alla libreria di runtime RPC di usare le credenziali del thread chiamante al momento di ogni chiamata, anziché l'handle di associazione. Il rilevamento delle identità predefinito è statico.
Se l'identità del client non cambierà, il rilevamento delle identità statiche può avere caratteristiche di prestazioni migliori e può risparmiare tempo di esecuzione RPC controllando ogni volta se l'identità nel thread chiamante corrisponde all'identità assegnata al sistema di sicurezza. Se l'identità del thread chiamante può cambiare tra le chiamate e il server deve riconoscere tali modifiche, è consigliabile specificare il rilevamento delle identità dinamiche: il tempo di esecuzione RPC tiene traccia in modo silenzioso ed efficiente dell'identità e, se l'identità cambia, gestisce tale modifica per conto dell'utente.
Nota
Per le chiamate ncalrpc , il rilevamento delle identità statico e dinamico ha caratteristiche di prestazioni diverse e, a seconda delle circostanze, può essere più veloce.
Come parte della specifica QOS, il programma client può anche impostare il tipo di rappresentazione che un programma server può eseguire per suo conto. Per altre informazioni, vedere Rappresentazione client.
Il campo numero di versione della struttura RPC_SECURITY_QOS deve essere sempre impostato su RPC_C_SECURITY_QOS_VERSION.