struttura RPC_SECURITY_QOS_V5_A (rpcdce.h)
La struttura RPC_SECURITY_QOS_V5 definisce le impostazioni di qualità del servizio di sicurezza della versione 5 in un handle di associazione. Vedere La sezione Osservazioni per la disponibilità delle versioni nelle edizioni di Windows.
Sintassi
typedef struct _RPC_SECURITY_QOS_V5_A {
unsigned long Version;
unsigned long Capabilities;
unsigned long IdentityTracking;
unsigned long ImpersonationType;
unsigned long AdditionalSecurityInfoType;
union {
RPC_HTTP_TRANSPORT_CREDENTIALS_A *HttpCredentials;
} u;
void *Sid;
unsigned int EffectiveOnly;
void *ServerSecurityDescriptor;
} RPC_SECURITY_QOS_V5_A, *PRPC_SECURITY_QOS_V5_A;
Members
Version
Versione della struttura RPC_SECURITY_QOS utilizzata. In questo argomento viene illustrata la versione 5 della struttura RPC_SECURITY_QOS . Per altre versioni, vedere RPC_SECURITY_QOS, RPC_SECURITY_QOS_V2, RPC_SECURITY_QOS_V3 e RPC_SECURITY_QOS_V4 .
Capabilities
Servizi di sicurezza forniti all'applicazione. Le funzionalità sono un set di flag che possono essere combinati usando l'operatore OR bit per bit.
Valore | Significato |
---|---|
|
Non sono necessarie funzionalità specifiche del provider. |
|
Il runtime RPC richiede l'autenticazione reciproca dal provider di sicurezza. Alcuni provider di sicurezza non supportano l'autenticazione reciproca. Se il provider di sicurezza non supporta l'autenticazione reciproca o non è possibile stabilire l'identità del server, una chiamata di procedura remota a tale server ha esito negativo con errore RPC_S_SEC_PKG_ERROR.
Nota RPC si basa sul provider di servizi condivisi per indicare quali opzioni di sicurezza sono state negoziate correttamente; a sua volta, una chiamata RPC ha esito negativo se il provider di servizi condivisi segnala che non è riuscito a negoziare un'opzione. Tuttavia, alcuni provider di sicurezza sono noti per segnalare la negoziazione corretta di un'opzione anche quando l'opzione non è stata negoziata correttamente. Ad esempio, NTLM segnala la corretta negoziazione dell'autenticazione reciproca per motivi di compatibilità con le versioni precedenti, anche se non supporta l'autenticazione reciproca. Controllare con il provider di servizi condivisi specifico usato per determinarne il comportamento rispetto alle opzioni di sicurezza.
|
|
Non implementato attualmente. |
|
Accetta le credenziali del client anche se l'autorità di certificazione (CA) non è presente nell'elenco delle ca attendibili del server. Questa costante viene usata solo dal provider di servizi condivisi SCHANNEL. |
|
Il runtime RPC nel client ignora un errore per stabilire un contesto di sicurezza che supporta la delega. In genere, se il client richiede la delega e il sistema di sicurezza non riesce a stabilire un contesto di sicurezza che supporta la delega, viene restituito l'errore RPC_S_SEC_PKG_ERROR; quando viene specificato questo flag, non viene restituito alcun errore.
Nota Non supportato in Windows XP e nelle edizioni client precedenti, non supportato nelle edizioni server di Windows 2000 e versioni precedenti.
|
|
Il server è locale per il computer che effettua la chiamata RPC. In questo caso RPC indica al mapper dell'endpoint di selezionare solo gli endpoint registrati dall'entità specificata nei membri ServerPrincName o Sid (questi membri sono disponibili solo in RPC_SECURITY_QOS_V3, RPC_SECURITY_QOS_V4 e solo RPC_SECURITY_QOS_V5 ). Per ulteriori informazioni, vedere la sezione Osservazioni.
Nota Non supportato in Windows XP e nelle edizioni client precedenti, non supportato nelle edizioni server di Windows 2000 e versioni precedenti.
|
IdentityTracking
Modalità di rilevamento del contesto come uno dei valori seguenti.
Valore | Significato |
---|---|
|
Il contesto di sicurezza viene creato una sola volta e non viene mai modificato durante l'intera comunicazione, anche se il lato client lo modifica. Questo è il comportamento predefinito se non è specificato RPC_SECURITY_QOS_V5 . |
|
Il contesto di sicurezza viene modificato ogni volta che viene modificato il valore ModifiedId nel token del client. Tutti i protocolli usano ModifiedId (vedere la nota).
Windows 2000: Tutti i protocolli remoti (tutti i protocolli diversi da ncalrpc) usano authenticationID, noto anche come LogonId, per tenere traccia delle modifiche nell'identità del client. Il protocollo ncalrpc usa ModifiedId. |
ImpersonationType
Livello in cui il processo del server può rappresentare il client.
Valore | Significato |
---|---|
|
Usa il livello di rappresentazione predefinito. |
|
Il client non fornisce informazioni di identificazione al server. Il server non può rappresentare il client o identificare il client. Molti server rifiutano le chiamate con questo tipo di rappresentazione. |
|
Il server può ottenere l'identità del client e rappresentare il client per eseguire Controllo di accesso controlli elenco (ACL), ma non può rappresentare il client. Per altre informazioni, vedere Livelli di rappresentazione .
Nota Alcuni provider di sicurezza possono considerare questo tipo di rappresentazione come equivalente a RPC_C_IMP_LEVEL_IMPERSONATE.
|
|
Il server può rappresentare il contesto di sicurezza del client nel sistema locale, ma non nei sistemi remoti. |
|
Il server può rappresentare il contesto di sicurezza del client quando rappresenta il client. Il server può anche effettuare chiamate in uscita ad altri server mentre agisce per conto del client. Il server può usare il contesto di sicurezza del client in altri computer per accedere alle risorse locali e remote come client. |
AdditionalSecurityInfoType
Tipo di credenziali aggiuntive presenti nell'unione u . Sono supportate le costanti seguenti:
Costanti supportate | Significato |
---|---|
|
Nessuna credenziale aggiuntiva viene passata nell'unione u . |
|
Il membro HttpCredentialsdell'unione u punta a una struttura RPC_HTTP_TRANSPORT_CREDENTIALS . Questo valore può essere usato solo quando la sequenza di protocollo è ncacn_http. Qualsiasi altra sequenza di protocollo restituisce RPC_S_INVALID_ARG. |
u
u.HttpCredentials
Set aggiuntivo di credenziali da passare a RPC, sotto forma di struttura RPC_HTTP_TRANSPORT_CREDENTIALS . Utilizzato quando il membro AdditionalSecurityInfoType è impostato su RPC_C_AUTHN_INFO_TYPE_HTTP.
Sid
Puntatore a un ID di sicurezza (SID). Il SID è un'alternativa al membro ServerPrincName e ne può essere specificato solo uno. Il membro Sid non può essere impostato su null se il provider di sicurezza è SSP SCHANNEL. Alcune sequenze di protocollo usano Sid internamente per la sicurezza e alcuni usano un ServerPrincName. Ad esempio, ncalrpc usa un Sid internamente e se il chiamante conosce sia il SID che il ServerPrincName, una chiamata che usa ncalrpc può essere completata molto più velocemente in alcuni casi se viene passato il SID. Al contrario, le sequenze di protocollo ncacn_ e ncadg_ usano un ServerPrincName internamente e pertanto possono eseguire chiamate più velocemente quando viene specificato ServerPrincName.
EffectiveOnly
Se impostato, solo i privilegi abilitati vengono visualizzati dal server.
ServerSecurityDescriptor
Puntatore al SECURITY_DESCRIPTOR che identifica il server. È necessario per l'autenticazione reciproca.
Commenti
L'elenco seguente definisce la disponibilità delle versioni QOS in vari sistemi operativi Windows:
- Versione 1: Windows 2000 e versioni successive.
- Versione 2: Windows XP con Service Pack 1 (SP1) e versioni successive.
- Versione 3: Windows Server 2003 e versioni successive.
- Versione 4: Windows Vista e versioni successive.
- Versione 5: Windows 8 e versioni successive.
Le funzioni di sicurezza lato client RpcBindingInqAuthInfoEx e RpcBindingSetAuthInfo usano la struttura RPC_SECURITY_QOS per richiedere informazioni o impostare la qualità di sicurezza del servizio per un handle di associazione.
RPC supporta l'hint RPC_C_QOS_CAPABILITIES_LOCAL_MA_HINT (non supportato nelle edizioni client di Windows XP e versioni precedenti, non supportato nelle edizioni server di Windows 2000 e versioni precedenti). Questo hint viene usato solo quando vengono usati endpoint dinamici e autenticazione reciproca. Inoltre, non è supportato per le sequenze di protocolli ncadg_ . Se questo flag viene usato per una sequenza di protocollo ncadg_ o senza usare l'autenticazione reciproca, RPC_S_INVALID_ARG viene restituito dalla chiamata di funzione RpcBindingSetAuthInfoEx . Questo flag è progettato per impedire un attacco Denial of Service. L'uso di questo flag impone al runtime RPC di chiedere solo l'endpoint mapper per gli endpoint registrati dall'entità specificata nei membri ServerPrincName o Sid . Ciò impedisce a un utente malintenzionato nel computer locale di tentare di ingannare il client RPC per connettersi a un endpoint spoof registrato nel mapper dell'endpoint. Si noti che poiché l'attacco è locale (ad esempio da un computer server terminale con molti utenti), il flag funziona anche solo per le chiamate RPC effettuate localmente.
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows 8 [solo app desktop] |
Server minimo supportato | Windows Server 2012 [solo app desktop] |
Intestazione | rpcdce.h (include Rpc.h) |
Vedi anche
RPC_BINDING_HANDLE_SECURITY_V1