Condividi tramite


RPC_HTTP_TRANSPORT_CREDENTIALS_V2_A struttura (rpcdce.h)

La struttura RPC_HTTP_TRANSPORT_CREDENTIALS_V2 definisce credenziali aggiuntive per l'autenticazione a un server proxy RPC o a un server proxy HTTP quando si usa RPC/HTTP.

RPC_HTTP_TRANSPORT_CREDENTIALS_V2 estende RPC_HTTP_TRANSPORT_CREDENTIALS consentendo l'autenticazione su un server proxy HTTP.

Sintassi

typedef struct _RPC_HTTP_TRANSPORT_CREDENTIALS_V2_A {
  SEC_WINNT_AUTH_IDENTITY_A *TransportCredentials;
  unsigned long             Flags;
  unsigned long             AuthenticationTarget;
  unsigned long             NumberOfAuthnSchemes;
  unsigned long             *AuthnSchemes;
  unsigned char             *ServerCertificateSubject;
  SEC_WINNT_AUTH_IDENTITY_A *ProxyCredentials;
  unsigned long             NumberOfProxyAuthnSchemes;
  unsigned long             *ProxyAuthnSchemes;
} RPC_HTTP_TRANSPORT_CREDENTIALS_V2_A, *PRPC_HTTP_TRANSPORT_CREDENTIALS_V2_A;

Members

TransportCredentials

Puntatore a una struttura SEC_WINNT_AUTH_IDENTITY contenente il nome utente, il dominio e la password per l'utente.

Flags

Set di flag che possono essere combinati con l'operatore OR bit per bit.

Valore Significato
RPC_C_HTTP_FLAG_USE_SSL
Indica a RPC di usare SSL per comunicare con il proxy RPC.
RPC_C_HTTP_FLAG_USE_FIRST_AUTH_SCHEME
Quando impostato, RPC sceglie il primo schema nella matrice AuthnSchemes e tenta di eseguire l'autenticazione nel proxy RPC. Se il proxy RPC non supporta lo schema di autenticazione selezionato, la chiamata ha esito negativo. Se non è impostato, il client RPC esegue una query sul proxy RPC per schemi di autenticazione supportati e ne sceglie uno.

AuthenticationTarget

Specifica la destinazione di autenticazione.

Deve essere impostato su uno o entrambi i valori seguenti:

Valore Significato
RPC_C_HTTP_AUTHN_TARGET_SERVER
Eseguire l'autenticazione con il proxy RPC, ovvero il server HTTP da un punto di vista HTTP. Questo è il valore più comune.
RPC_C_HTTP_AUTHN_TARGET_PROXY
Eseguire l'autenticazione con il proxy HTTP. Questo valore è insolito.

NumberOfAuthnSchemes

Numero di elementi nella matrice AuthnScheme .

AuthnSchemes

Un puntatore a una matrice di schemi di autenticazione che il client è disposto a usare. Ogni elemento della matrice può contenere una delle costanti seguenti:

RPC_C_HTTP_AUTHN_SCHEME_BASIC

RPC_C_HTTP_AUTHN_SCHEME_NTLM

RPC_C_HTTP_AUTHN_SCHEME_PASSPORT

RPC_C_HTTP_AUTHN_SCHEME_DIGEST

RPC_C_HTTP_AUTHN_SCHEME_NEGOTIATE

RPC_C_HTTP_AUTHN_SCHEME_PASSPORT, RPC_C_HTTP_AUTHN_SCHEME_NEGOTIATE e RPC_C_HTTP_AUTHN_SCHEME_DIGEST sono definiti come costanti, ma non attualmente supportate. I chiamanti non devono specificarli; in questo modo si verifica un errore di RPC_S_CANNOT_SUPPORT. Ogni costante può essere specificata una sola volta. RPC non verifica questa restrizione per motivi di prestazioni, ma specificando una costante più di una volta genera risultati non definiti.

L'algoritmo per la scelta dello schema di autenticazione effettivo è il seguente:

Se viene specificato RPC_C_HTTP_FLAG_USE_FIRST_AUTH_SCHEME, viene scelto il primo schema di autenticazione. Se non è supportato dal server, l'istituzione della connessione ha esito negativo. Se RPC_C_HTTP_FLAG_USE_FIRST_AUTH_SCHEME non è specificato, il client RPC tenta prima di tutto la connessione anonima al proxy RPC. Se IIS restituisce un problema di autenticazione, il client RPC sceglie lo schema di autenticazione preferito dal server se si trova anche nella matrice AuthnScheme . Se lo schema preferito dal server non si trova nella matrice AuthnScheme , la matrice AuthnScheme verrà attraversata dall'inizio al termine e, se viene rilevato uno schema supportato anche dal server, viene usato lo schema di autenticazione.

ServerCertificateSubject

Contiene una stringa facoltativa con il nome dell'entità server previsto. Il nome dell'entità è nello stesso formato generato per RpcCertGeneratePrincipalName (vedere Nomi entità per altre informazioni). Questo membro viene usato solo quando viene usato SSL. In questi casi, il certificato del server viene controllato con il nome dell'entità generata. Se non corrispondono, viene restituito un errore. Questo membro consente ai client di autenticare il proxy RPC.

ProxyCredentials

Puntatore a una struttura SEC_WINNT_AUTH_IDENTITY contenente il nome utente, il dominio e la password per l'utente durante l'autenticazione in un server proxy HTTP. ProxyCredentials è valido solo quando AuthenticationTarget contiene RPC_C_HTTP_AUTHN_TARGET_PROXY.

NumberOfProxyAuthnSchemes

Numero di elementi nella matrice ProxyAuthnSchemes durante l'autenticazione in un server proxy HTTP. NumberOfProxyAuthnSchemes è valido solo quando AuthenticationTarget contiene RPC_C_HTTP_AUTHN_TARGET_PROXY.

ProxyAuthnSchemes

Un puntatore a una matrice di schemi di autenticazione che il client è disposto a usare quando si esegue l'autenticazione in un server proxy HTTP. Ogni elemento della matrice può contenere una delle costanti seguenti. ProxyAuthnSchemes è valido solo quando AuthenticationTarget contiene RPC_C_HTTP_AUTHN_TARGET_PROXY.

RPC_C_HTTP_AUTHN_SCHEME_BASIC

RPC_C_HTTP_AUTHN_SCHEME_NTLM

RPC_C_HTTP_AUTHN_SCHEME_PASSPORT

RPC_C_HTTP_AUTHN_SCHEME_DIGEST

RPC_C_HTTP_AUTHN_SCHEME_NEGOTIATE

Commenti

Se il membro TransportCredentials è NULL e lo schema di autenticazione è NTLM, vengono usate le credenziali dell'utente attualmente connesso. Per evitare di esporre le credenziali utente nella rete tramite un hash LM debole, le credenziali di accesso utente vengono usate solo se una o entrambe le condizioni seguenti sono vere:

  • Il chiamante ha richiesto l'uso di SSL e ha usato il membro ServerCertificateSubject . Questo scenario garantisce che le credenziali siano protette sia in transito che nella destinazione finale, anche se viene usato un hash debole.
  • La chiave lncompatibilitylevel è impostata su 2 o superiore. In questo modo il provider di sicurezza NTLM genera o risponde solo all'hash NT sicuro, non all'hash LM debole. Inoltre, i clienti sono invitati a usare il livello 3 o superiore, che tenterà NTLMv2.
Se viene usata la versione Unicode della funzione RpcBindingSetAuthInfoEx , è necessario specificare anche le versioni Unicode delle strutture RPC_HTTP_TRANSPORT_CREDENTIALS_V2 e SEC_WINNT_AUTH_IDENTITY e il membro Flags in TransportCredentials deve essere impostato su SEC_WINNT_AUTH_IDENTITY_UNICODE. Se viene usata la versione ANSI della funzione RpcBindingSetAuthInfoEx, è necessario specificare le versioni ANSI di RPC_HTTP_TRANSPORT_CREDENTIALS_V2 e SEC_WINNT_AUTH_IDENTITY strutture e il membro Flags in TransportCredentials deve essere impostato su SEC_WINNT_AUTH_IDENTITY_ANSI.

Requisiti

   
Client minimo supportato Windows Vista [solo app desktop]
Server minimo supportato Windows Server 2008 [solo app desktop]
Intestazione rpcdce.h (include Rpc.h)

Vedi anche

Nomi delle entità

RPC_HTTP_TRANSPORT_CREDENTIALS

RPC_HTTP_TRANSPORT_CREDENTIALS_V3

RPC_SECURITY_QOS

RPC_SECURITY_QOS_V2

RPC_SECURITY_QOS_V3

Chiamate di procedure remote con RPC tramite HTTP

RpcBindingSetAuthInfoEx

RpcCertGeneratePrincipalName

SEC_WINNT_AUTH_IDENTITY