estrutura RPC_SECURITY_QOS_V4_A (rpcdce.h)
A estrutura RPC_SECURITY_QOS_V4 define as configurações de qualidade de serviço de segurança da versão 4 em um identificador de associação. Consulte Comentários sobre a disponibilidade de versão em edições do Windows.
Sintaxe
typedef struct _RPC_SECURITY_QOS_V4_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;
unsigned int EffectiveOnly;
} RPC_SECURITY_QOS_V4_A, *PRPC_SECURITY_QOS_V4_A;
Membros
Version
Versão da estrutura RPC_SECURITY_QOS que está sendo usada. Este tópico documenta a versão 4 da estrutura RPC_SECURITY_QOS . Confira RPC_SECURITY_QOS, RPC_SECURITY_QOS_V2, RPC_SECURITY_QOS_V3 e RPC_SECURITY_QOS_V5 para outras versões.
Capabilities
Serviços de segurança que estão sendo fornecidos ao aplicativo. Funcionalidades é um conjunto de sinalizadores que podem ser combinados usando o operador OR bit a bit.
Valor | Significado |
---|---|
|
Não são necessárias funcionalidades específicas do provedor. |
|
O tempo de execução RPC solicita 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; Por sua vez, uma chamada RPC falhará se o SSP relatar 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, embora 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.
|
|
Não implementado atualmente. |
|
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. |
|
O runtime do RPC no cliente ignora 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 de servidor anteriores.
|
|
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 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 de servidor anteriores.
|
IdentityTracking
O modo de acompanhamento de contexto como um dos valores a seguir.
Valor | Significado |
---|---|
|
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_V4 não for especificado. |
|
O contexto de segurança é revisado sempre que a ModifiedId no token do cliente é alterada. 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
O nível no qual o processo do servidor pode representar o cliente.
Valor | Significado |
---|---|
|
Usa o nível de representação padrão. |
|
O cliente não fornece informações de identificação ao servidor. O servidor não pode representar o cliente ou identificar o cliente. Muitos servidores rejeitam chamadas com esse tipo de representação. |
|
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.
|
|
O servidor pode representar o contexto de segurança do cliente em seu sistema local, mas não em sistemas remotos. |
|
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
O tipo de credenciais adicionais presentes na união u . Há suporte para as seguintes constantes:
Constantes com suporte | Significado |
---|---|
|
Nenhuma credencial adicional é passada na união u . |
|
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
Ponteiro 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.
EffectiveOnly
Se definido, somente os privilégios habilitados serão vistos pelo servidor.
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 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 serviço de segurança de 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 anteriores do servidor). 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 somente 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 falso que ele registrou no mapeador do ponto de extremidade. Observe que, como o ataque é apenas local (como de um computador de servidor de terminal com muitos usuários), o sinalizador também funciona apenas para chamadas RPC feitas localmente.
Requisitos
Cliente mínimo com suporte | Windows Vista [somente aplicativos da área de trabalho] |
Servidor mínimo com suporte | Windows Server 2008 [somente aplicativos da área de trabalho] |
Cabeçalho | rpcdce.h (inclua Rpc.h) |
Confira também
RPC_BINDING_HANDLE_SECURITY_V1