estrutura RPC_HTTP_TRANSPORT_CREDENTIALS_V3_A (rpcdce.h)

A estrutura RPC_HTTP_TRANSPORT_CREDENTIALS_V3 define credenciais adicionais para autenticar em um servidor proxy RPC ou servidor proxy HTTP ao usar RPC/HTTP.

RPC_HTTP_TRANSPORT_CREDENTIALS_V3 estende RPC_HTTP_TRANSPORT_CREDENTIALS_V2 permitindo que formulários arbitrários de credenciais sejam usados.

Sintaxe

typedef struct _RPC_HTTP_TRANSPORT_CREDENTIALS_V3_A {
  RPC_AUTH_IDENTITY_HANDLE TransportCredentials;
  unsigned long            Flags;
  unsigned long            AuthenticationTarget;
  unsigned long            NumberOfAuthnSchemes;
  unsigned long            *AuthnSchemes;
  unsigned char            *ServerCertificateSubject;
  RPC_AUTH_IDENTITY_HANDLE ProxyCredentials;
  unsigned long            NumberOfProxyAuthnSchemes;
  unsigned long            *ProxyAuthnSchemes;
} RPC_HTTP_TRANSPORT_CREDENTIALS_V3_A, *PRPC_HTTP_TRANSPORT_CREDENTIALS_V3_A;

Membros

TransportCredentials

Um ponteiro para um identificador de autenticação opaco na forma de uma estrutura RPC_AUTH_IDENTITY_HANDLE .

Flags

Um conjunto de sinalizadores que podem ser combinados com o operador OR bit a bit.

Valor Significado
RPC_C_HTTP_FLAG_USE_SSL
Instrui o RPC a usar o SSL para se comunicar com o Proxy RPC.
RPC_C_HTTP_FLAG_USE_FIRST_AUTH_SCHEME
Quando definido, o RPC escolhe o primeiro esquema na matriz AuthnSchemes e tenta se autenticar no Proxy RPC. Se o Proxy RPC não der suporte ao esquema de autenticação selecionado, a chamada falhará. Quando não definido, o cliente RPC consulta o Proxy RPC para esquemas de autenticação com suporte e escolhe um.

AuthenticationTarget

Especifica o destino de autenticação.

Deve ser definido como um ou ambos os seguintes valores:

Valor Significado
RPC_C_HTTP_AUTHN_TARGET_SERVER
Autentique-se no Proxy RPC, que é o servidor HTTP de uma perspectiva HTTP. Esse é o valor mais comum.
RPC_C_HTTP_AUTHN_TARGET_PROXY
Autentique-se no Proxy HTTP. Esse valor é incomum.

NumberOfAuthnSchemes

O número de elementos na matriz AuthnScheme .

AuthnSchemes

Um ponteiro para uma matriz de esquemas de autenticação que o cliente está disposto a usar. Cada elemento da matriz pode conter uma das seguintes constantes:

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 são definidos como constantes, mas não têm suporte no momento. Os chamadores não devem especificá-los; isso resulta em RPC_S_CANNOT_SUPPORT erro. Cada constante pode ser especificada uma vez. O RPC não verifica essa restrição por motivos de desempenho, mas especificar uma constante mais de uma vez produz resultados indefinidos.

O algoritmo para escolher o esquema de autenticação real é o seguinte:

Se RPC_C_HTTP_FLAG_USE_FIRST_AUTH_SCHEME for especificado, o primeiro esquema de autenticação será escolhido. Se não houver suporte para o servidor, o estabelecimento de conexão falhará. Se RPC_C_HTTP_FLAG_USE_FIRST_AUTH_SCHEME não for especificado, o cliente RPC primeiro tentará uma conexão anônima com o Proxy RPC. Se o IIS retornar o desafio de autenticação, o cliente RPC escolherá o esquema de autenticação preferido pelo servidor se ele também estiver na matriz AuthnScheme . Se o esquema preferido pelo servidor não estiver na matriz AuthnScheme , a matriz AuthnScheme será percorrida do início ao fim e, se for encontrado um esquema com suporte também pelo servidor, esse esquema de autenticação será usado.

ServerCertificateSubject

Contém uma cadeia de caracteres opcional com o nome da entidade de segurança do servidor esperado. O nome da entidade de segurança está no mesmo formato que o gerado para RpcCertGeneratePrincipalName (consulte Nomes de entidade de segurança para obter mais informações). Esse membro é usado somente quando o SSL é usado. Nesses casos, o certificado do servidor é verificado em relação ao nome da entidade de segurança gerada. Se eles não corresponderem, um erro será retornado. Esse membro permite que os clientes autentiquem o Proxy RPC.

ProxyCredentials

Um ponteiro para um identificador de autenticação opaco na forma de uma estrutura RPC_AUTH_IDENTITY_HANDLE ao autenticar em um servidor proxy HTTP. ProxyCredentials só é válido quando AuthenticationTarget contém RPC_C_HTTP_AUTHN_TARGET_PROXY.

NumberOfProxyAuthnSchemes

O número de elementos na matriz ProxyAuthnSchemes ao autenticar em um servidor proxy HTTP. NumberOfProxyAuthnSchemes só é válido quando AuthenticationTarget contém RPC_C_HTTP_AUTHN_TARGET_PROXY.

ProxyAuthnSchemes

Um ponteiro para uma matriz de esquemas de autenticação que o cliente está disposto a usar ao autenticar em um servidor proxy HTTP. Cada elemento da matriz pode conter uma das seguintes constantes. ProxyAuthnSchemes só é válido quando AuthenticationTarget contém 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

Comentários

Se o membro TransportCredentials for NULL e o esquema de autenticação for NTLM, as credenciais do usuário conectado no momento serão usadas. Para evitar expor credenciais de usuário na rede por meio de um hash LM fraco, as credenciais de logon do usuário serão usadas somente se uma ou ambas as seguintes condições forem verdadeiras:

  • O chamador solicitou o uso do SSL e usou o membro ServerCertificateSubject . Esse cenário garante que as credenciais sejam protegidas em trânsito e no destino final, mesmo que um hash fraco seja usado.
  • A chave lncompatibilitylevel é definida como 2 ou superior. Isso faz com que o provedor de segurança NTLM emita ou responda apenas ao hash NT forte, não ao hash LM fraco. Além disso, os clientes são incentivados a usar o nível 3 ou superior, o que tentará NTLMv2.
Se a versão Unicode da função RpcBindingSetAuthInfoEx for usada, as versões Unicode das estruturas RPC_HTTP_TRANSPORT_CREDENTIALS_V3 e SEC_WINNT_AUTH_IDENTITY também deverão ser fornecidas e o membro Flags em TransportCredentials deverá ser definido como SEC_WINNT_AUTH_IDENTITY_UNICODE. Se a versão ANSI da função RpcBindingSetAuthInfoEx for usada, as versões ANSI de RPC_HTTP_TRANSPORT_CREDENTIALS_V3 e SEC_WINNT_AUTH_IDENTITY estruturas deverão ser fornecidas e o membro Flags em TransportCredentials deverá ser definido como SEC_WINNT_AUTH_IDENTITY_ANSI.

Requisitos

   
Cliente mínimo com suporte Windows 7 [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows Server 2008 R2 [somente aplicativos da área de trabalho]
Cabeçalho rpcdce.h (inclua Rpc.h)

Confira também

Nomes de entidade de segurança

RPC_HTTP_TRANSPORT_CREDENTIALS

RPC_HTTP_TRANSPORT_CREDENTIALS_V2

RPC_SECURITY_QOS

RPC_SECURITY_QOS_V2

RPC_SECURITY_QOS_V3

Chamadas de procedimentos remotos usando RPC sobre HTTP

RpcBindingSetAuthInfoEx

RpcCertGeneratePrincipalName

SEC_WINNT_AUTH_IDENTITY