RPC_SECURITY_QOS struttura (rpcdce.h)

La struttura RPC_SECURITY_QOS definisce le impostazioni di qualità del servizio di sicurezza in un handle di associazione. Vedere Osservazioni per la disponibilità della versione nelle edizioni di Windows.

Sintassi

typedef struct _RPC_SECURITY_QOS {
  unsigned long Version;
  unsigned long Capabilities;
  unsigned long IdentityTracking;
  unsigned long ImpersonationType;
} RPC_SECURITY_QOS, *PRPC_SECURITY_QOS;

Members

Version

Versione della struttura RPC_SECURITY_QOS usata. In questo argomento viene illustrata la versione 1 della struttura RPC_SECURITY_QOS . Per altre versioni, vedere RPC_SECURITY_QOS_V2, RPC_SECURITY_QOS_V3, RPC_SECURITY_QOS_V4 e RPC_SECURITY_QOS_V5 .

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
RPC_C_QOS_CAPABILITIES_DEFAULT
Usato quando non sono necessarie funzionalità specifiche del provider.
RPC_C_QOS_CAPABILITIES_MUTUAL_AUTH
Se si specifica questo flag, il tempo di esecuzione 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 l'identità del server non può essere stabilita, una chiamata di procedura remota a tale server non riesce con l'errore RPC_S_SEC_PKG_ERROR.
Nota RPC si basa sul provider di servizi di sicurezza per indicare quali opzioni di sicurezza sono state negoziate correttamente; RPC a sua volta non riesce alcuna chiamata per cui il provider di servizi di sicurezza (SSP) segnala che non è stato possibile negoziare un'opzione. Tuttavia, alcuni provider di sicurezza sono noti per segnalare la negoziazione riuscita 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 di sicurezza specifico usato per determinare il comportamento rispetto alle opzioni di sicurezza.
 
RPC_C_QOS_CAPABILITIES_MAKE_FULLSIC
Non implementato attualmente.
RPC_C_QOS_CAPABILITIES_ANY_AUTHORITY
Accetta le credenziali del client anche se l'autorità di certificazione (CA) non è nell'elenco di CA attendibili del server. Questa costante viene usata solo dal SSP SCHANNEL.
RPC_C_QOS_CAPABILITIES_IGNORE_DELEGATE_FAILURE
Se specificato, questo flag indirizza il runtime RPC nel client a ignorare un errore per stabilire un contesto di sicurezza che supporta la delega. In genere, se il client chiede la delega e il sistema di sicurezza non può stabilire un contesto di sicurezza che supporta la delega, RPC_S_SEC_PKG_ERROR viene restituito l'errore; quando viene specificato questo flag, non viene restituito alcun errore.
Nota Non supportato nelle edizioni client di Windows XP e precedenti, non supportato nelle edizioni server di Windows 2000 e versioni precedenti.
 
RPC_C_QOS_CAPABILITIES_LOCAL_MA_HINT
Questo flag specifica a RPC che il server è locale nel computer che effettua la chiamata RPC. In questa situazione RPC indica al mapper dell'endpoint di raccogliere solo gli endpoint registrati dall'entità specificata nei membri ServerPrincName o Sid (questi membri sono disponibili in RPC_SECURITY_QOS_V3, RPC_SECURITY_QOS_V4 e RPC_SECURITY_QOS_V5 solo). Per ulteriori informazioni, vedere la sezione Osservazioni.
Nota Non supportato nelle edizioni client di Windows XP e precedenti, non supportato nelle edizioni server di Windows 2000 e versioni precedenti.
 
RPC_C_QOS_CAPABILITIES_SCHANNEL_FULL_AUTH_IDENTITY
Se impostato, il runtime RPC usa SSP SChannel per eseguire l'autenticazione basata su smartcard senza visualizzare una finestra di dialogo del prompt del PIN dal provider di servizi di crittografia (CSP).

Nella chiamata a RpcBindingSetAuthInfoEx il parametro AuthIdentity deve essere una struttura SEC_WINNT_AUTH_IDENTITY i cui membri contengono quanto segue:

  • L'utente deve essere un puntatore a una struttura di SCHANNEL_CRED
  • UserLength deve essere 0
  • Il dominio deve essere NULL
  • DomainLength deve essere 0
  • La password può essere il PIN del certificato o NULL. Se password è il PIN, PasswordLength deve essere la lunghezza corretta per il PIN e se password è NULL, PasswordLength deve essere 0
Se il flag di RPC_C_QOS_CAPABILITIES_SCHANNEL_FULL_AUTH_IDENTITY viene usato per qualsiasi provider di servizi di rete diverso da SChannel o se i membri di SEC_WINNT_AUTH_IDENTITY non sono conformi al valore precedente, RPC_S_INVALID_ARG verrà restituito da RpcBindingSetAuthInfoEx.

IdentityTracking

Imposta la modalità di rilevamento del contesto. Deve essere impostato su uno dei valori visualizzati nella tabella seguente.

Valore Significato
RPC_C_QOS_IDENTITY_STATIC
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. Si tratta del comportamento predefinito se RPC_SECURITY_QOS non è specificato.
RPC_C_QOS_IDENTITY_DYNAMIC
Il contesto viene modificato ogni volta che viene modificato l'Id modificato nel token del client. Tutti i protocolli usano l'oggetto ModifiedId (vedere nota).

Windows 2000: Tutti i protocolli remoti (tutti i protocolli diversi da ncalrpc) usano l'AuthenticationID, noto anche come LogonId, per tenere traccia delle modifiche nell'identità del client. Il protocollo ncalrpc usa ModifiedId.

ImpersonationType

Livello a cui il processo del server può rappresentare il client.

Valore Significato
RPC_C_IMP_LEVEL_DEFAULT
Usa il livello di rappresentazione predefinito.
RPC_C_IMP_LEVEL_ANONYMOUS
Il client non fornisce informazioni di identificazione al server. Il server non può rappresentare il client o identificare il client. Molti server rifiutano chiamate con questo tipo di rappresentazione.
Nota Alcuni provider di sicurezza possono considerare questo tipo di rappresentazione come equivalente a RPC_C_IMP_LEVEL_IMPERSONATE. Dai provider di sicurezza di Windows, questa operazione viene eseguita RPC_C_AUTHN_WINNT solo quando viene usata con sequenze di protocolli diverse da ncalrpc. È anche fatto da RPC_C_AUTHN_GSS_NEGOTIATE, RPC_C_AUTHN_GSS_SCHANNEL e RPC_C_AUTHN_GSS_KERBEROS.
 
RPC_C_IMP_LEVEL_IDENTIFY
Il server può ottenere l'identità del client e rappresentare il client per eseguire controlli elenco Controllo di accesso, 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. Dai provider di sicurezza di Windows, questa operazione viene eseguita RPC_C_AUTHN_WINNT solo quando viene usata con sequenze di protocolli diverse da ncalrpc. È anche fatto da RPC_C_AUTHN_GSS_NEGOTIATE, RPC_C_AUTHN_GSS_SCHANNEL e RPC_C_AUTHN_GSS_KERBEROS.
 
RPC_C_IMP_LEVEL_IMPERSONATE
Il server può rappresentare il contesto di sicurezza del client nel sistema locale, ma non nei sistemi remoti.
RPC_C_IMP_LEVEL_DELEGATE
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.

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 edizioni di Windows supportano anche le versioni di livello inferiore. Ad esempio, Windows Server 2003 supporta la versione 3, ma supporta anche le versioni 1 e 2.

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. 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 al mapper dell'endpoint solo 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 di spoofing registrato nel mapper dell'endpoint. Si noti che poiché l'attacco è solo locale ,ad esempio da un computer terminal server con molti utenti, il flag funziona anche solo per le chiamate RPC effettuate localmente.

Nota Alcuni provider di sicurezza, ad esempio Kerberos, supportano il tipo di rappresentazione della delega. Nelle edizioni di Windows che supportano il tipo di rappresentazione della delega, se il client ha richiesto la delega, ma il provider di sicurezza non è in grado di fornirlo, la chiamata ha esito negativo con PRC_S_SEC_PKG_ERROR a meno che non venga specificato il flag RPC_C_QOS_CAPABILITIES_IGNORE_DELEGATE_FAILURE.
 

Requisiti

Requisito Valore
Client minimo supportato Windows 2000 Professional [solo app desktop]
Server minimo supportato Windows 2000 Server [solo app desktop]
Intestazione rpcdce.h (include Rpc.h)

Vedi anche

RPC_SECURITY_QOS_V2

RPC_SECURITY_QOS_V3

RPC_SECURITY_QOS_V4

RPC_SECURITY_QOS_V5

RpcBindingInqAuthInfoEx

RpcBindingSetAuthInfoEx