Artigo: 811889 - Última revisão: sábado, 17 de Setembro de 2011 - Revisão: 3.0 Sobre como resolver a mensagem de erro "Não é possível gerar contexto SSPI"
Nesta páginaSumário Este artigo passo a passo descreve como resolver problemas das fontes mais típicas da mensagem de erro "Não é possível gerar contexto SSPI". Poderá receber esta mensagem de erro sob as seguintes condições:
Compreender a terminologia Kerberos e o Nome Principal de ServiçoO controlador de SQL Server num computador cliente utiliza a segurança integrada para utilizar o token de segurança Windows da conta de utilizador para ligar correctamente para um computador que está a executar o SQL Server. O token de segurança do Windows é delegado do cliente para o computador que está a executar o SQL Server. O controlador de SQL Server efectua esta delegação quando o token de segurança do utilizador é delegado de um computador para outro, através de uma das seguintes configurações:
O erro "Não é possível gerar contexto SSPI" é criado quando o SSPI utiliza o Kerberos para delegar por TCP/IP e não consegue concluir as operações necessárias para delegar correctamente o token de segurança do utilizador para o computador de destino que está a executar o SQL Server. Porque é que a Interface de Fornecedor de Suporte de Segurança escolhe o NTLM ou o KerberosO Kerberos utiliza um identificador nomeado "Nome Principal do Serviço" (SPN). Considere um SPN como domínio ou identificador único de floresta de alguma instância num recurso de servidor de rede. Pode ter um SPN para um serviço Web, para um serviço SQL ou para um serviço SMTP. Também pode ter múltiplas instâncias de serviços Web no mesmo computador físico que tem um SPN único.Um SPN para o SQL Server é constituído pelos seguintes elementos:
Quando o controlador de SQL Server num cliente utiliza a segurança integrada para ligar ao SQL Server, o código do controlador no cliente tenta resolver o DNS totalmente qualificado do computador que executa o SQL Server, utilizando os APIs de rede WinSock. Para realizar esta operação, o código do controlador chama os APIs WinSock gethostbyname e gethostbyaddr. Mesmo se um endereço de IP ou um nome de anfitrião for transmitido como o nome do computador em que o SQL Server está a ser executado, o controlador de SQL Server tenta resolver o DNS totalmente qualificado do computador, se o computador utilizar segurança integrada. Quando o controlador de SQL Server no cliente resolve o DNS completamente qualificado do computador que executa o SQL Server, o DNS correspondente é utilizado para formar o SPN para este computador. Portanto, quaisquer problemas relacionados com a forma como endereço de IP ou o nome de anfitrião está resolvido para o DNS completamente qualificado por WinSock, poderá levar o controlador de SQL Server a criar um SPN inválido para o computador que está a executar o SQL Server. Por exemplo, os SPNs inválidos que o controlador de SQL Server do lado do cliente pode formar como DNS completamente qualificado e resolvido:
O principal factor que possibilita a autenticação Kerberos é a validade da funcionalidade DNS na rede. Pode verificar esta funcionalidade no cliente e servidor, através do utilitário da linha de comandos Ping. No computador cliente, execute o seguinte comando para obter o endereço IP do servidor que está a executar o SQL Server (em que o nome do computador que está a executar o SQL Server é SQLServer1): ping sqlserver1 Para confirmar se o utilitário da linha de comandos Ping resolve o DNS completamente qualificado do SQLServer1, execute o seguinte comando:ping -a IPAddress Por exemplo: C:\>ping SQLSERVER1 A efectuar o ping de SQLSERVER1 [123.123.123.123] com 32 bytes de dados: Resposta de 123.123.123.123: bytes=32 tempo<10ms TTL=128 Resposta de 123.123.123.123: bytes=32 tempo<10ms TTL=128 Resposta de 123.123.123.123: bytes=32 tempo<10ms TTL=128 Resposta de 123.123.123.123: bytes=32 tempo<10ms TTL=128 Estatísticas de Ping para 123.123.123.123: Pacotes: Enviado = 4, Recebido = 4, Perdido = 0 (0% perdido), Tempo aproximado de ida e volta em milissegundos: Mínimo = 0ms, Máximo = 0ms, Média = 0ms C:\>ping -a 123.123.123.123 A efectuar o ping de SQLSERVER1.northamerica.corp.mycompany.com [123.123.123.123] com 32 bytes de dados: Resposta de 123.123.123.123: bytes=32 tempo<10ms TTL=128 Resposta de 123.123.123.123: bytes=32 tempo<10ms TTL=128 Resposta de 123.123.123.123: bytes=32 tempo<10ms TTL=128 Resposta de 123.123.123.123: bytes=32 tempo<10ms TTL=128 Estatísticas de Ping para 123.123.123.123: Pacotes: Enviado = 4, Recebido = 4, Perdido = 0 (0% perdido), Tempo aproximado de ida e volta em milissegundos: Mínimo = 0ms, Máximo = 0ms, Média = 0ms C:\> Criação do Nome Principal do Serviço do SQL ServerTrata-se de uma das partes críticas da interacção do Kerberos e do SQL Server. Com o SQL Server, pode executar o serviço SQL Server devido a uma das seguintes circunstâncias: uma conta de LocalSystem, uma conta de utilizador local ou uma conta de utilizador de domínio. Quando a instância do serviço SQL Server iniciar, tentará registar o seu próprio SPN no Active Directory, utilizando a chamada API DsWriteAccountSpn. Se a chamada não for bem sucedida, o seguinte aviso é registado no Visualizador de Eventos:Origem: ID do Evento MSSQLServer: Descrição 19011: Informações SuperSocket: (SpnRegister): Erro 8344. Para mais informações sobre a função DsWriteAccountSpn, visite o seguinte Web site da Microsoft:http://msdn2.microsoft.com/en-us/library/ms676056.aspx
(http://msdn2.microsoft.com/en-us/library/ms676056.aspx)
Explicação simplificadaSe executar o serviço SQL Server na conta LocalSystem, o SPN é automaticamente registado e o Kerberos interage correctamente com o computador que está a executar o SQL Server. No entanto, se executar o serviço SQL Server numa conta de domínio ou numa conta local, a tentativa de criar o SPN falhará na maior parte dos casos uma vez que a conta de domínio e a conta local não podem ter os seus próprios SPNs. Quando a criação de SPN não for concluída com êxito, isto significa que o SPN é configurado para o computador que executa o SQL Server. Se testar ao utilizar uma conta de administrador de domínio como a conta de serviço do SQL Server, o SPN é criado com êxito, uma vez que as credenciais do nível de administrador de domínio que tem de possuir para criar um SPN estão presentes.Dado que poderá não utilizar uma conta de administrador de domínio para executar o serviço de SQL Server (para evitar riscos de segurança), o computador que está a executar o SQL Server não pode criar o seu próprio SPN. Por conseguinte, necessita de criar manualmente um SPN para o computador que está a executar o SQL Server, se pretende utilizar o Kerberos ao ligar a um computador que está a executar o SQL Server. Isto verifica-se se estiver a executar o SQL Server numa conta de utilizador de domínio ou numa conta de utilizador local. O SPN que cria tem de estar associado à conta de serviço do serviço SQL Server nesse computador em específico. O SPN não pode ser associado ao contentor de computador a não ser que o computador que se encontra a executar o SQL Server inicie com o sistema local Apenas pode haver um SPN, que tem de ser associado ao contentor adequado. Normalmente, trata-se da conta de serviço SQL Server actual. No entanto, esta é a conta de computador com o sistema local. Verificar o domínioVerifique se o domínio no qual inicia sessão pode comunicar com o domínio ao qual o computador que está a executar o SQL Server pertence. Também é necessário que exista uma resolução de nomes adequada no domínio.
Como configurar o serviço SQL Server para criar SPNs dinamicamente para as instâncias do SQL ServerPara configurar o serviço SQL Server para criar SPNs dinamicamente, necessita de modificar as definições de controlo de acesso da conta no serviço de directório Active Directory. Tem de conceder a permissão "Read servicePrincipalName" e a permissão "Write servicePrincipalName" para a conta de serviço SQL Server.Aviso Se utilizar as Interfaces de Serviço do Active Directory (ADSI) Editar snap-in, o utilitário LDP, ou qualquer outro cliente LDAP versão 3 e modificar de forma incorrecta os atributos de objectos do Active Directory, poderá provocar sérios problemas. Estes problemas poderão forçar a reinstalação do Microsoft Windows Server 2003, Microsoft Windows 2000 Server, Microsoft Exchange Server 2003, Microsoft Exchange 2000 Server, ou de ambos (Windows e Exchange). Não podemos garantir que os problemas resultantes da modificação incorrecta dos atributos de objectos do Active Directory possam ser resolvidos. Modifique estes atributos por sua conta e risco. Nota Para garantir as permissões adequadas e direitos de utilizador para a conta de início do SQL Server, necessita de ter iniciado sessão como administrador de domínio, ou necessita de solicitar ao seu administrador de domínio a realização desta tarefa. Para configurar o teclado serviço SQL Server para criar SPNs dinamicamente, siga estes passos:
Verifique o ambiente do servidorVerifique algumas definições básicas no computador em que o SQL Server está instalado.
Verifique o ambiente do clienteVerifique o seguinte no cliente:
Verifique o utilitário de rede do clienteO Utilitário de Rede do Cliente (CNU) é apresentado juntamente com o Microsoft Data Access Components (MDAC) e é utilizado para configurar a conectividade a computadores que estão a executar o SQL Server. Pode utilizar o utilitário MDAC Cliconfg.exe CNU para configurar a conectividade:
Informações a recolher para abrir um caso de Suporte Técnico da Microsoft (PSS)Se não conseguir obter a causa do problema, utilizando os passos de resolução de problemas neste artigo, recolha as seguintes informações e abra um caso de Suporte Técnico da Microsoft (PSS):Para obter uma lista completa dos números de telefone do Suporte Técnico da Microsoft, bem como informações sobre os custos de suporte, visite o seguinte Web site da Microsoft: http://support.microsoft.com/contactus/?ln=pt&ws=support#tab0
(http://support.microsoft.com/contactus/?ln=pt&ws=support#tab0)
Como configurar manualmente um Nome do Principal do Serviço para o ServerPara obter mais informações sobre como configurar manualmente um Nome do Principal do Serviço para o SQL Server, clique no número de artigo que se segue para visualizar o artigo na Base de Dados de Conhecimento Microsoft:319723
(http://support.microsoft.com/kb/319723/pt/
)
Como utilizar a autenticação Kerberos no SQL Server
A Interface do Fornecedor de Suporte de Segurança (SSPI) é a interface para a segurança do Microsoft Windows NT utilizada para a autenticação Kerberos, e suporta o esquema de autenticação do Fornecedor de Suporte de Segurança NTLM. A autenticação ocorre no nível de sistema operativo quando inicia sessão num domínio Windows. A autenticação Kerberos apenas está disponível em computadores baseados no Windows 2000 que têm o Kerberos activado e que estão a utilizar o Active Directory.
O SSPI apenas é utilizado para ligações TCP/IP que são realizadas através da Autenticação Windows. (O Windows Authentication também é conhecido como Ligações Fidedignas ou Segurança Integrada.) O SSPI não utilizado para Pipes Nomeados ou ligações multiprotocolo. Assim sendo, pode evitar o problema, configurando os seus clientes para que liguem de um protocolo diferente de TCP/IP. Quando o cliente SQL Server tenta utilizar segurança integrada através de sockets TCP/IP para um computador remoto que está a executar o SQL Server, a biblioteca de rede cliente SQL Server utiliza o SSPI API para realizar a delegação de segurança. O cliente de rede SQL Server (Dbnetlib.dll) faz uma chamada para a função AcquireCredentialsHandle e transmite "negociar" para o parâmetro pszPackage. Isto notifica o fornecedor de segurança adjacente para efectuar delegação de negociação. Neste contexto, a negociação significa que tentar o Kerberos ou autenticação a NTLM em computadores baseados no Windows. Por outras palavras, o Windows utiliza a delegação Kerberos se o computador de destino que está a executar o SQL Server tem um SPN associado, correctamente configurado. Caso contrário, o Windows utiliza a delegação NTLM. Nota Verifique se não está a utilizar uma conta nomeada "SYSTEM" para iniciar qualquer tipo dos serviços SQL Server (MSSQLServer, SQLServerAgent, MSSearch). A palavra-passe SYSTEM pode causar conflitos com o Centro de Distribuição de Chaves (KDC). Referências Para mais informações como funciona a segurança do Kerberos e SSPI, clique nos números de artigo que se seguem para visualizar os artigos na Base de Dados de Conhecimento Microsoft: 266080
(http://support.microsoft.com/kb/266080/pt/
)
Respostas às perguntas mais frequentes sobre o Kerberos.
231789
(http://support.microsoft.com/kb/231789/pt/
)
Processo de início de sessão local para Windows 2000
304161
(http://support.microsoft.com/kb/304161/pt/
)
A autenticação mútua SSPI está indicada no lado do cliente mas não no lado do servidor
232179
(http://support.microsoft.com/kb/232179/pt/
)
Administração Kerberos no Windows 2000
230476
(http://support.microsoft.com/kb/230476/pt/
)
Descrição de erros comuns relacionados com Kerberos no Windows 2000
262177
(http://support.microsoft.com/kb/262177/pt/
)
Como activar o registo de eventos Kerberos
277658
(http://support.microsoft.com/kb/277658/pt/
)
O Setspn falha se o nome de domínio diferir do nome NetBIOS em que o SQL Server SPN está registado
244474
(http://support.microsoft.com/kb/244474/pt/
)
Como forçar o Kerberos a utilizar TCP em vez de UDP no Windows Server 2003, no Windows XP e no Windows 2000
326985
(http://support.microsoft.com/kb/326985/pt/
)
Como resolver problemas de questões relacionadas com o Kerberos em IIS
Para ver um papel branco sobre a segurança do Microsoft SQL Server 2000, visite o seguinte Web site da Microsoft: http://technet.microsoft.com/en-us/cc984178.aspx
(http://technet.microsoft.com/en-us/cc984178.aspx)
A informação contida neste artigo aplica-se a:
| Outros Recursos Outros Sites de Suporte
ComunidadesObtenha Ajuda AgoraTraduções de Artigos
|






Windows Live
Facebook
Twitter
Linkedin
Digg it
Yahoo
Delicious
StumbleUpon
Yammer
Reddit
Technorati
FriendFeed
Email
Voltar ao topo