estrutura RPC_SECURITY_QOS_V3_A (rpcdce.h)

A estrutura RPC_SECURITY_QOS_V3 define as configurações de qualidade de serviço de segurança da versão 3 em um identificador de associação. Consulte Comentários para obter disponibilidade de versão em edições do Windows.

Sintaxe

typedef struct _RPC_SECURITY_QOS_V3_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;
} RPC_SECURITY_QOS_V3_A, *PRPC_SECURITY_QOS_V3_A;

Membros

Version

Versão da estrutura RPC_SECURITY_QOS que está sendo usada. Este tópico documenta a versão 3 da estrutura RPC_SECURITY_QOS . Confira RPC_SECURITY_QOS, RPC_SECURITY_QOS_V2 e RPC_SECURITY_QOS_V4 e RPC_SECURITY_QOS_V5 para outras versões.

Capabilities

Serviços de segurança que estão sendo fornecidos ao aplicativo. Os recursos são um conjunto de sinalizadores que podem ser combinados usando o operador OR bit a bit.

Valor Significado
RPC_C_QOS_CAPABILITIES_DEFAULT
Usado quando nenhum recurso específico do provedor é necessário.
RPC_C_QOS_CAPABILITIES_MUTUAL_AUTH
Especificar esse sinalizador faz com que o tempo de execução do RPC solicite autenticação mútua do provedor de segurança. Alguns provedores de segurança não dão suporte à autenticação mútua. Se o provedor de segurança não der suporte à autenticação mútua ou a identidade do servidor não puder ser estabelecida, uma chamada de procedimento remoto para esse servidor falhará com o erro RPC_S_SEC_PKG_ERROR.
Nota O RPC depende do SSP para indicar quais opções de segurança foram negociadas com êxito; O RPC, por sua vez, falha em qualquer chamada para a qual o SSP relata que não pôde negociar uma opção. No entanto, alguns provedores de segurança são conhecidos por relatar a negociação bem-sucedida de uma opção mesmo quando a opção não foi negociada com êxito. Por exemplo, o NTLM relatará uma negociação bem-sucedida de autenticação mútua por motivos de compatibilidade com versões anteriores, mesmo que não dê suporte à autenticação mútua. Verifique com o SSP específico que está sendo usado para determinar seu comportamento em relação às opções de segurança.
 
RPC_C_QOS_CAPABILITIES_MAKE_FULLSIC
Não implementado atualmente.
RPC_C_QOS_CAPABILITIES_ANY_AUTHORITY
Aceita as credenciais do cliente mesmo que a AC (autoridade de certificação) não esteja na lista de ACs confiáveis do servidor. Essa constante é usada apenas pelo SSP do SCHANNEL.
RPC_C_QOS_CAPABILITIES_IGNORE_DELEGATE_FAILURE
Quando especificado, esse sinalizador direciona o runtime RPC no cliente para ignorar um erro para estabelecer um contexto de segurança que dê suporte à delegação. Normalmente, se o cliente solicitar delegação e o sistema de segurança não puder estabelecer um contexto de segurança que dê suporte à delegação, o erro RPC_S_SEC_PKG_ERROR será retornado; quando esse sinalizador é especificado, nenhum erro é retornado.
Nota Sem suporte no Windows XP e em edições de cliente anteriores, sem suporte no Windows 2000 e em edições anteriores do servidor.
 
RPC_C_QOS_CAPABILITIES_LOCAL_MA_HINT
Quando especificado, esse sinalizador especifica ao RPC que o servidor é local para o computador que está fazendo a chamada RPC. Nessa situação, o RPC instrui o mapeador de ponto de extremidade a selecionar apenas os pontos de extremidade registrados pela entidade de segurança especificada nos membros ServerPrincName ou Sid (esses membros estão disponíveis apenas em RPC_SECURITY_QOS_V3, RPC_SECURITY_QOS_V4 e RPC_SECURITY_QOS_V5 ). Confira Comentários para obter mais informações.
Nota Sem suporte no Windows XP e em edições de cliente anteriores, sem suporte no Windows 2000 e em edições anteriores do servidor.
 

IdentityTracking

Define o modo de acompanhamento de contexto. Deve ser definido como um dos valores mostrados na tabela a seguir.

Valor Significado
RPC_C_QOS_IDENTITY_STATIC
O contexto de segurança é criado apenas uma vez e nunca é revisado durante toda a comunicação, mesmo que o lado do cliente o altere. Esse será o comportamento padrão se RPC_SECURITY_QOS_V3 não for especificado.
RPC_C_QOS_IDENTITY_DYNAMIC
O contexto é revisado sempre que o ModifiedId no token do cliente é alterado. Todos os protocolos usam ModifiedId (consulte observação).

Windows 2000: Todos os protocolos remotos (todos os protocolos diferentes de ncalrpc) usam a AuthenticationID, também conhecida como LogonId, para controlar as alterações na identidade do cliente. O protocolo ncalrpc usa ModifiedId.

ImpersonationType

Nível no qual o processo do servidor pode representar o cliente.

Valor Significado
RPC_C_IMP_LEVEL_DEFAULT
Usa o nível de representação padrão.
RPC_C_IMP_LEVEL_ANONYMOUS
O cliente não fornece informações de identificação para o servidor. O servidor não pode representar o cliente nem identificar o cliente. Muitos servidores rejeitam chamadas com esse tipo de representação.
RPC_C_IMP_LEVEL_IDENTIFY
O servidor pode obter a identidade do cliente e representar o cliente para executar verificações de ACL (lista de Controle de Acesso), mas não pode representar o cliente. Consulte Níveis de representação para obter mais informações.
Nota Alguns provedores de segurança podem tratar esse tipo de representação como equivalente a RPC_C_IMP_LEVEL_IMPERSONATE.
 
RPC_C_IMP_LEVEL_IMPERSONATE
O servidor pode representar o contexto de segurança do cliente em seu sistema local, mas não em sistemas remotos.
RPC_C_IMP_LEVEL_DELEGATE
O servidor pode representar o contexto de segurança do cliente ao atuar em nome do cliente. O servidor também pode fazer chamadas de saída para outros servidores enquanto atua em nome do cliente. O servidor pode usar o contexto de segurança do cliente em outros computadores para acessar recursos locais e remotos como o cliente.

AdditionalSecurityInfoType

Especifica o tipo de credenciais adicionais presentes na união u . Há suporte para as seguintes constantes:

Constantes com suporte Significado
0
Nenhuma credencial adicional é passada na união u .
RPC_C_AUTHN_INFO_TYPE_HTTP
O membro HttpCredentials da união u aponta para uma estrutura RPC_HTTP_TRANSPORT_CREDENTIALS . Esse valor só pode ser usado quando a sequência de protocolo é ncacn_http. Qualquer outra sequência de protocolo retorna RPC_S_INVALID_ARG.

u

u.HttpCredentials

Conjunto adicional de credenciais a serem passadas para o RPC, na forma de uma estrutura RPC_HTTP_TRANSPORT_CREDENTIALS . Usado quando o membro AdditionalSecurityInfoType é definido como RPC_C_AUTHN_INFO_TYPE_HTTP.

Sid

Aponta para um SID (identificador de segurança). O SID é uma alternativa ao membro ServerPrincName e apenas um pode ser especificado. O membro Sid não poderá ser definido como não NULL se o provedor de segurança for o SSP do SCHANNEL. Algumas sequências de protocolo usam Sid internamente para segurança e outras usam um ServerPrincName. Por exemplo, ncalrpc usa um Sid internamente e, se o chamador souber o SID e o ServerPrincName, uma chamada usando ncalrpc poderá ser concluída muito mais rapidamente em alguns casos se o SID for passado. Por outro lado, as sequências de protocolo ncacn_ e ncadg_ usam um ServerPrincName internamente e, portanto, podem executar chamadas mais rapidamente quando fornecido o ServerPrincName.

Comentários

A listagem a seguir define a disponibilidade de versões do QOS em vários sistemas operacionais Windows:

  • Versão 1: Windows 2000 e posterior.
  • Versão 2: Windows XP com Service Pack 1 (SP1) e posterior.
  • Versão 3: Windows Server 2003 e posterior.
  • Versão 4: Windows Vista e posterior.
  • Versão 5: Windows 8 e posterior.
As edições do Windows também dão suporte a versões de nível inferior. Por exemplo, o Windows Server 2003 dá suporte à versão 3, mas também dá suporte às versões 1 e 2.

As funções de segurança do lado do cliente RpcBindingInqAuthInfoEx e RpcBindingSetAuthInfo usam a estrutura RPC_SECURITY_QOS para consultar ou definir a qualidade de segurança do serviço para um identificador de associação.

O RPC dá suporte à dica de RPC_C_QOS_CAPABILITIES_LOCAL_MA_HINT (sem suporte no Windows XP e em edições de cliente anteriores, sem suporte no Windows 2000 e em edições de servidor anteriores). Essa dica é usada somente quando pontos de extremidade dinâmicos e autenticação mútua são usados. Além disso, não há suporte para as sequências de protocolo ncadg_ . Se esse sinalizador for usado para uma sequência de protocolo ncadg_ ou sem usar autenticação mútua, RPC_S_INVALID_ARG será retornado da chamada de função RpcBindingSetAuthInfoEx . Esse sinalizador foi projetado para evitar um ataque de negação de serviço. O uso desse sinalizador força o RPC Runtime a solicitar ao mapeador de ponto de extremidade apenas pontos de extremidade registrados pela entidade de segurança especificada nos membros ServerPrincName ou Sid . Isso impede que um invasor no computador local tente enganar seu cliente RPC para se conectar a um ponto de extremidade de falsificação registrado no mapeador do ponto de extremidade. Observe que, como o ataque é local apenas (como de um computador de servidor de terminal com muitos usuários), o sinalizador também funciona apenas para chamadas RPC feitas localmente.

Nota Alguns provedores de segurança, como Kerberos, dão suporte ao tipo de representação de delegação. Em edições do Windows que dão suporte ao tipo de representação de delegação, se o cliente tiver solicitado delegação, mas o provedor de segurança não puder for for fornecido, a chamada falhará com PRC_S_SEC_PKG_ERROR a menos que o sinalizador RPC_C_QOS_CAPABILITIES_IGNORE_DELEGATE_FAILURE seja especificado.
 

Requisitos

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

Confira também

RPC_HTTP_TRANSPORT_CREDENTIALS

RPC_SECURITY_QOS

RPC_SECURITY_QOS_V2

RPC_SECURITY_QOS_V4

RPC_SECURITY_QOS_V5

RpcBindingInqAuthInfoEx

RpcBindingSetAuthInfoEx