Snego
O Snego, cujo identificador de serviço de autenticação é RPC_C_AUTHN_GSS_NEGOTIATE, não fornece serviços de autenticação propriamente ditos. Em vez disso, ele usa uma lista de serviços de autenticação e negocia um serviço que funcionará entre o cliente e o servidor. Os parâmetros de autenticação não são usados pelo Snego, mas são passados para o serviço de autenticação escolhido, que faz a autenticação real. O Snego foi padronizado pela IETF (Internet Engineering Task Force) em dezembro de 1998, no documento RFC 2478.
O Snego é útil quando você não sabe quais serviços de autenticação o computador remoto pode fornecer.
Para usar o Snego, o cliente e o servidor devem especificar o Snego como o serviço de autenticação. O servidor especifica RPC_C_AUTHN_GSS_NEGOTIATE como o membro dwAuthnSvc de uma das estruturas de SOLE_AUTHENTICATION_SERVICE no parâmetro de matriz asAuthSvc asAuthSvc que é passado para CoInitializeSecurity. O cliente pode especificar o Snego chamando CoSetProxyBlanket e passando RPC_C_AUTHN_GSS_NEGOTIATE como o parâmetro dwAuthnSvc. O cliente também deve fornecer uma lista de possíveis serviços de autenticação para o Snego por meio do packagelist membro da estrutura SEC_WINNT_AUTH_IDENTITY_EX que é passada para o parâmetro pAuthInfo na chamada para CoSetProxyBlanket. Se pAuthInfo for NULL, o Snego comporá uma lista de serviços de autenticação dos pacotes de segurança instalados no computador. Em seguida, o Snego envia a lista de serviços de autenticação para o servidor, compara a lista com os serviços de autenticação disponíveis do servidor e escolhe um serviço de autenticação a ser usado para a conexão.
Nota
O Schannel não pode estar na lista de serviços de autenticação que o Snego usa.
Os clientes também podem especificar o Snego quando chamam CoInitializeSecurity. Os parâmetros dwAuthnSvc e pAuthInfo de coSetProxyBlanket se tornam membros de uma estrutura SOLE_AUTHENTICATION_INFO que é passada para CoInitializeSecurity por meio de seu parâmetro pAuthList. Os detalhes dos valores desses membros são os mesmos descritos no parágrafo anterior.
Se O Snego for usado, as chamadas para CoQueryProxyBlanket ou CoQueryClientBlanket retornarão o Snego como o serviço de autenticação, em vez do serviço de autenticação real escolhido pelo Snego para estabelecer a conexão.
Tópicos relacionados