RPC_BINDING_HANDLE_SECURITY_V1_A struttura (rpcdce.h)
La struttura RPC_BINDING_HANDLE_SECURITY_V1 contiene le opzioni di sicurezza di base con cui creare un handle di associazione RPC.
Sintassi
typedef struct _RPC_BINDING_HANDLE_SECURITY_V1_A {
unsigned long Version;
unsigned char *ServerPrincName;
unsigned long AuthnLevel;
unsigned long AuthnSvc;
SEC_WINNT_AUTH_IDENTITY_A *AuthIdentity;
RPC_SECURITY_QOS *SecurityQos;
} RPC_BINDING_HANDLE_SECURITY_V1_A, *PRPC_BINDING_HANDLE_SECURITY_V1_A;
Members
Version
Versione di questa struttura. Per RPC_BINDING_HANDLE_SECURITY_V1 è necessario impostare su 1.
ServerPrincName
Puntatore a una stringa contenente il nome dell'entità server a cui fa riferimento l'handle di associazione. Il contenuto del nome e della relativa sintassi sono definiti dal servizio di autenticazione in uso.
AuthnLevel
Livello di autenticazione da eseguire nelle chiamate di routine remote effettuate usando questo handle di associazione. Per un elenco dei livelli di autenticazione supportati da RPC, vedere Costanti a livello di autenticazione.
Se AuthnSvc è impostato su RPC_C_AUTHN_NONE, questo membro deve anche essere impostato su RPC_C_AUTHN_NONE.
AuthnSvc
Servizio di autenticazione da usare quando si esegue l'associazione.
Specificare RPC_C_AUTHN_NONE per disattivare l'autenticazione per le chiamate di routine remote effettuate usando l'handle di associazione.
Se viene specificato RPC_C_AUTHN_DEFAULT, la libreria di runtime RPC usa il servizio di autenticazione RPC_C_AUTHN_WINNT per le chiamate di routine remote effettuate usando l'handle di associazione.
Se AuthnLevel è impostato su RPC_C_AUTHN_NONE, questo membro deve essere impostato in modo analogo su RPC_C_AUTHN_NONE.
AuthIdentity
SEC_WINNT_AUTH_IDENTITY struttura che contiene le credenziali di autenticazione e autorizzazione del client appropriate per il servizio di autenticazione e autorizzazione selezionato.
SecurityQos
RPC_SECURITY_QOS struttura che contiene le impostazioni di qualità del servizio di sicurezza per l'handle di associazione.
Commenti
Se questa struttura non viene passata a RpcBindingCreate , ovvero se il parametro Security di RpcBindingCreate è impostato su NULL , vengono assunti i comportamenti di sicurezza predefiniti seguenti:
- Per la sequenza di protocollo ncalrpc (RPC locale), RPC userà la sicurezza a livello di trasporto. Ciò significa che RPC userà i meccanismi di sicurezza offerti dal kernel di Windows per fornire la sicurezza e RPC non autenticarà il server poiché si connette usando l'identità del thread corrente. In questo caso, il rilevamento delle identità è statico, il tipo di rappresentazione è impostato su "Impersonate" e il livello di autenticazione è impostato su "Privacy".
- Per la sequenza di protocolli ncacn_np, RPC userà anche la sicurezza a livello di trasporto. Se la chiamata è remota, RPC usa i meccanismi di sicurezza forniti dal reindirizzamento del file system di Windows e non esiste alcuna autenticazione reciproca. In questo caso, l'identità è l'identità del thread corrente, lo stato di rilevamento delle identità è statico, il tipo di rappresentazione è impostato su "Rappresentazione" e il livello di autenticazione viene determinato dai criteri del computer remoto.
Se la chiamata è locale, RPC usa i meccanismi di sicurezza forniti dal file system con pipe denominata e non esiste anche l'autenticazione reciproca. In questo caso, l'identità è l'identità del thread corrente o qualsiasi identità stabilita tramite il comando "net use" per il server. Lo stato di rilevamento delle identità è dinamico, il tipo di rappresentazione è impostato su "Impersonate" e il livello di autenticazione è impostato su "Privacy".
- Per le sequenze di protocolli ncacn_ip_tcp, ncacn_ip_udp e ncacn_http, non viene usata alcuna sicurezza quando la sicurezza è impostata su NULL. Il server non eseguirà la rappresentazione e tutti i dati verranno inviati come testo chiaro. Per garantire la protezione massima per i dati, l'applicazione deve sempre fornire dati di sicurezza.
Nella tabella seguente vengono riepilogate le impostazioni di sicurezza predefinite per le diverse sequenze di protocolli se il parametro Security di RpcBindingCreate è impostato su NULL.
Impostazioni di sicurezza predefinite | ncalrpc | ncacn_np locale | ncacn_np remoto | ncacn_ip_tcp, ncacn_ip_udp e ncacn_http |
---|---|---|---|---|
Meccanismo di sicurezza | Windows Kernel | NPFS | Reindirizzamento file system | Nessuno |
Livello di autenticazione | Privacy | Privacy | Criteri del server dipendenti | Nessuno |
Autenticazione reciproca? | No | No | No | No |
Tipo di rappresentazione | Impersonate | Impersonate | Impersonate | N/D |
Tipo di rilevamento delle identità | Statico | Dynamic | Static | N/D |
Solo efficace? | Sì | No | N/D | N/D |
Identità delle chiamate | Thread corrente | Thread corrente | Impostazioni del thread corrente o "net use" | N/D |
Se si crea un handle di associazione veloce chiamando l'API RpcBindingCreate , il rilevamento delle identità predefinito per ncalrpc in assenza di impostazioni di sicurezza specifiche è statico.
È consigliabile tenere presente le differenze in queste due API se si passa tra di essi nell'applicazione.
Dopo aver creato l'handle di associazione, è possibile usare le API RpcBindingSetAuthInfoInfoEx e RpcBindingSetAuthInfoEx per modificare le impostazioni del set di handle di associazione con questa struttura.
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows Vista [solo app desktop] |
Server minimo supportato | Windows Server 2008 [solo app desktop] |
Intestazione | rpcdce.h (include Rpc.h) |