estrutura RPC_SECURITY_QOS (rpcdce.h)

A estrutura RPC_SECURITY_QOS define as configurações de qualidade de serviço de segurança 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 {
  unsigned long Version;
  unsigned long Capabilities;
  unsigned long IdentityTracking;
  unsigned long ImpersonationType;
} RPC_SECURITY_QOS, *PRPC_SECURITY_QOS;

Membros

Version

Versão da estrutura RPC_SECURITY_QOS que está sendo usada. Este tópico documenta a versão 1 da estrutura RPC_SECURITY_QOS . Confira RPC_SECURITY_QOS_V2, RPC_SECURITY_QOS_V3, 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 (Provedor de Serviços de Segurança) informa 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
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.
 
RPC_C_QOS_CAPABILITIES_SCHANNEL_FULL_AUTH_IDENTITY
Se definido, o runtime do RPC usará o SSP do SChannel para executar a autenticação baseada em cartão inteligente sem exibir uma caixa de diálogo de prompt de PIN pelo CSP (provedor de serviços criptográficos).

Na chamada para RpcBindingSetAuthInfoEx, o parâmetro AuthIdentity deve ser uma estrutura SEC_WINNT_AUTH_IDENTITY cujos membros contêm o seguinte:

  • O usuário deve ser um ponteiro para uma estrutura SCHANNEL_CRED
  • UserLength deve ser 0
  • O domínio deve ser NULL
  • DomainLength deve ser 0
  • A senha pode ser o PIN do certificado ou NULL. Se Password for o PIN, PasswordLength deverá ter o comprimento correto para o PIN e, se Password for NULL, PasswordLength deverá ser 0
Se o sinalizador RPC_C_QOS_CAPABILITIES_SCHANNEL_FULL_AUTH_IDENTITY for usado para qualquer SSP diferente de SChannel ou se os membros do SEC_WINNT_AUTH_IDENTITY não estiverem em conformidade com o acima, RPC_S_INVALID_ARG será retornado por RpcBindingSetAuthInfoEx.

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 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.
Nota Alguns provedores de segurança podem tratar esse tipo de representação como equivalente a RPC_C_IMP_LEVEL_IMPERSONATE. Nos provedores de segurança do Windows, isso é feito por RPC_C_AUTHN_WINNT somente quando usado com sequências de protocolo diferentes de ncalrpc. Isso também é feito por RPC_C_AUTHN_GSS_NEGOTIATE, RPC_C_AUTHN_GSS_SCHANNEL e RPC_C_AUTHN_GSS_KERBEROS.
 
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. Nos provedores de segurança do Windows, isso é feito por RPC_C_AUTHN_WINNT somente quando usado com sequências de protocolo diferentes de ncalrpc. Isso também é feito por RPC_C_AUTHN_GSS_NEGOTIATE, RPC_C_AUTHN_GSS_SCHANNEL e RPC_C_AUTHN_GSS_KERBEROS.
 
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.

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. 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 a 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 2000 Professional [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows 2000 Server [somente aplicativos da área de trabalho]
Cabeçalho rpcdce.h (inclua Rpc.h)

Confira também

RPC_SECURITY_QOS_V2

RPC_SECURITY_QOS_V3

RPC_SECURITY_QOS_V4

RPC_SECURITY_QOS_V5

RpcBindingInqAuthInfoEx

RpcBindingSetAuthInfoEx