Condividi tramite


Funzione RpcBindingSetAuthInfoExA (rpcdce.h)

La funzione RpcBindingSetAuthInfoEx imposta l'autenticazione, l'autorizzazione e la sicurezza di un handle di associazione.

Sintassi

RPC_STATUS RpcBindingSetAuthInfoExA(
  RPC_BINDING_HANDLE       Binding,
  RPC_CSTR                 ServerPrincName,
  unsigned long            AuthnLevel,
  unsigned long            AuthnSvc,
  RPC_AUTH_IDENTITY_HANDLE AuthIdentity,
  unsigned long            AuthzSvc,
  RPC_SECURITY_QOS         *SecurityQos
);

Parametri

Binding

Handle di associazione server in cui sono impostate le informazioni di autenticazione e autorizzazione.

ServerPrincName

Puntatore al nome dell'entità di sicurezza prevista del server a cui fa riferimento binding. Il contenuto del nome e la relativa sintassi sono definiti dal servizio di autenticazione in uso.

Nota Per il set di nomi di destinazione consentiti per i provider di servizi di configurazione, vedere i commenti nella documentazione InitializeSecurityContext.
 

AuthnLevel

Livello di autenticazione da eseguire su chiamate di procedura remota effettuate usando Binding. Per un elenco dei livelli di autenticazione supportati da RPC, vedere Authentication-Level Costanti.

AuthnSvc

Servizio di autenticazione da usare.

Specificare RPC_C_AUTHN_NONE per disattivare l'autenticazione per le chiamate di procedura remota effettuate tramite Binding.

Se si specifica RPC_C_AUTHN_DEFAULT, la libreria di runtime RPC usa il servizio di autenticazione RPC_C_AUTHN_WINNT per le chiamate di procedura remota effettuate utilizzando Binding.

AuthIdentity

Handle per la struttura che contiene le credenziali di autenticazione e autorizzazione del client appropriate per il servizio di autenticazione e autorizzazione selezionato.

Quando si usa il servizio di autenticazione RPC_C_AUTHN_WINNTAuthIdentity deve essere un puntatore a una struttura SEC_WINNT_AUTH_IDENTITY (definita in Rpcdce.h). I servizi di autenticazione Kerberos e Negotiate usano anche la struttura SEC_WINNT_AUTH_IDENTITY.

Specificare un valore Null per usare il contesto di accesso di sicurezza per lo spazio indirizzi corrente. Passare il valore RPC_C_NO_CREDENTIALS per usare un contesto di accesso anonimo. Si noti che RPC_C_NO_CREDENTIALS è valido solo se RPC_C_AUTHN_GSS_SCHANNEL è selezionato come servizio di autenticazione.

AuthzSvc

Servizio di autorizzazione implementato dal server per l'interfaccia di interesse. La validità e l'attendibilità dei dati di autorizzazione, come tutti i dati dell'applicazione, dipendono dal servizio di autenticazione e dal livello di autenticazione selezionato. Questo parametro viene ignorato quando si usa il servizio di autenticazione RPC_C_AUTHN_WINNT. Vedere La nota.

SecurityQos

Puntatore alla struttura RPC_SECURITY_QOS, che definisce la qualità di sicurezza del servizio.

Nota Per un elenco dei servizi di autenticazione supportati da RPC, vedere Authentication-Service Costanti.
 

Valore restituito

Valore Significato
RPC_S_OK
Chiamata riuscita.
RPC_S_INVALID_BINDING
L'handle di associazione non è valido.
RPC_S_WRONG_KIND_OF_BINDING
Si tratta del tipo errato di associazione per l'operazione.
RPC_S_UNKNOWN_AUTHN_SERVICE
Servizio di autenticazione sconosciuto.
 
Nota Per un elenco di codici di errore validi, vedere RPC Return Values.
 

Osservazioni

Un'applicazione client chiama la funzione RpcBindingSetAuthInfoEx per configurare un handle di associazione server per effettuare chiamate di procedura remota autenticate. Questa funzione offre la possibilità di impostare le informazioni sulla qualità del servizio di sicurezza sull'handle di associazione. In caso contrario, è identico a RpcBindingSetAuthInfo.

A meno che un client non chiami RpcBindingSetAuthInfoEx, tutte le chiamate di procedura remota in Binding non sono autenticate. Non è necessario un client per chiamare questa funzione.

La funzione RpcBindingSetAuthInfoEx crea uno snapshot delle credenziali. Pertanto, la memoria dedicata al parametro AuthIdentity può essere liberata prima dell'handle di associazione. L'eccezione è quando l'applicazione usa RpcBindingSetAuthInfoEx con RPC_C_QOS_IDENTITY_DYNAMIC e specifica anche un valore null nonper AuthIdentity.

Nota La funzione RpcBindingSetAuthInfo non deve essere chiamata su un handle di associazione mentre è in corso una chiamata RPC sullo stesso handle. In questo modo vengono generati risultati non definiti.
 
A causa dei diversi requisiti di versioni diverse di Microsoft RPC, Microsoft consiglia di mantenere un puntatore al parametro AuthIdentity purché esista l'handle di associazione. In questo modo aumenta la portabilità delle applicazioni.

Windows Server 2003 con SP1 e Windows XP con SP2: per Windows XP SP2 e Windows Server 2003 SP1, il puntatore al parametro AuthIdentity non deve essere mantenuto per la durata dell'handle di associazione. Questo puntatore deve essere mantenuto solo se vengono effettuate chiamate successive a RpcBindingInqAuthInfo o RpcBindingInqAuthInfoEx.

Nota La sequenza di protocollo ncalrpc supporta solo RPC_C_AUTHN_WINNT, ma supporta l'autenticazione reciproca; fornire un nome SPN e richiedere l'autenticazione reciproca tramite il parametro SecurityQOS per ottenere questo risultato.
 

Nota

L'intestazione rpcdce.h definisce RpcBindingSetAuthInfoEx come alias che seleziona automaticamente la versione ANSI o Unicode di questa funzione in base alla definizione della costante del preprocessore UNICODE. La combinazione dell'utilizzo dell'alias indipendente dalla codifica con il codice non indipendente dalla codifica può causare mancate corrispondenze che generano errori di compilazione o di runtime. Per altre informazioni, vedere convenzioni di per i prototipi di funzioni.

Fabbisogno

Requisito Valore
client minimo supportato Windows 2000 Professional [app desktop | App UWP]
server minimo supportato Windows 2000 Server [app desktop | App UWP]
piattaforma di destinazione Finestre
intestazione rpcdce.h (include Rpc.h)
libreria Rpcrt4.lib
dll Rpcrt4.dll

Vedere anche

RPC_SECURITY_QOS

RpcBindingInqAuthInfoEx

RpcServerRegisterAuthInfo