ID do artigo: 811889 - Última revisão: terça-feira, 1 de maio de 2012 - Revisão: 22.0 Como solucionar a mensagem de erro "Não é possível gerar contexto SSPI"
Se você faz parte de uma pequena empresa, encontre melhores recursos no site de Suporte para pequenas empresas (http://smallbusiness.support.microsoft.com/pt-br) .Nesta páginaSumário Este artigo descreve detalhadamente como solucionar as
origens mais comuns da mensagem de erro "Não é possível gerar contexto SSPI".
Você pode receber esta mensagem de erro sob as seguintes condições:
Entendendo a terminologia Kerberos e o nome de princípio de serviçoO driver do SQL Server em um computador cliente usa segurança integrada para usar o símbolo de segurança do Windows da conta de usuário para se conectar com êxito a um computador que está executando SQL Server. O símbolo de segurança do Windows é delegado a partir do cliente para o computador que está executando SQL Server. O driver do SQL Server realiza esta delegação quando o símbolo de segurança do usuário é delegado a partir de um computador para outro usando as seguintes configurações:
A mensagem de erro "Não é possível gerar contexto SSPI" é gerada quando o SSPI usa Kerberos para delegar sobre TCP/IP e o Kerberos não pode concluir as operações necessárias para delegar com êxito o símbolo de segurança do usuário para o computador de destino que está executando o SQL Server. Porque a interface do provedor de suporte de segurança escolhe NTLM ou KerberosKerberos usa um identificador chamado "Nome de princípio de serviço" (SPN). Considere um SPN com um identificador de domínio ou floresta exclusivo de alguma instância em um recurso de servidor de rede. É possível ter um SPN para um serviço da Web, para um serviço SQL ou para um serviço SMTP. Você também pode ter diversas instâncias de serviço da Web no mesmo computador que possui um SPN exclusivo.Um SPN para SQL Server é composto dos seguintes elementos:
Quando o driver SQL Server em um cliente usar a segurança integrada para se conectar ao SQL Server, o código do driver no cliente tenta resolver o DNS completamente qualificado do computador, que está executando o SQL Server, usando as APIs de rede WinSock. Para realizar esta operação, o código do driver chama as APIs WinSock gethostbyname e gethostbyaddr. Mesmo se um endereço IP ou nome de host for passado como o nome do computador executando SQL Server, o driver do SQL Server tenta resolver o DNS totalmente qualificado do computador se este estiver usando segurança integrada. Quando o driver do SQL Server no cliente resolve o DNS totalmente qualificado do computador executando SQL Server, o DNS correspondente é usado para formar o SPN para este computador. Por isso, quaisquer problemas relacionados à maneira que o endereço IP ou nome do host é resolvido para o DNS totalmente qualificado pelo WinSock podem fazer com que o driver do SQL Server crie um SPN inválido para o computador que está executando SQL Server. Por exemplo, os SPNs inválidos que o driver do SQL Server do lado do cliente pode formar como DNS totalmente qualificado são:
O principal fator que causa o êxito da autenticação Kerberos é a funcionalidade DNS válida na rede. Você pode verificar esta funcionalidade no cliente e no servidor usando o utilitário de linha de comando Ping. No computador cliente, execute o seguinte comando para obter o endereço IP do servidor executando SQL Server (no qual o nome do computador que está executando o SQL Server é SQLServer1): ping sqlserver1 Para verificar se o utilitário de linha de comando
resolve o DNS totalmente qualificado do SQLServer1, execute o seguinte comando:ping -a EndereçoIP Por exemplo: C:\>ping SQLSERVER1 Pinging SQLSERVER1 [123.123.123.123] com 32 bytes de dados: Resposta de 123.123.123.123: bytes=32 time<10ms TTL=128 Resposta de 123.123.123.123: bytes=32 time<10ms TTL=128 Resposta de 123.123.123.123: bytes=32 time<10ms TTL=128 Resposta de 123.123.123.123: bytes=32 time<10ms TTL=128 Estatísticas Ping para 123.123.123.123: Pacotes: Enviados = 4, Recebidos = 4, Perdidos = 0 (0% de perda), Tempo de resposta aproximado em milissegundos: Mínimo = 0ms, Máximo = 0ms, Médio = 0ms C:\>ping -a 123.123.123.123 Pinging SQLSERVER1.northamerica.corp.mycompany.com [123.123.123.123] com 32 bytes de dados: Resposta de 123.123.123.123: bytes=32 time<10ms TTL=128 Resposta de 123.123.123.123: bytes=32 time<10ms TTL=128 Resposta de 123.123.123.123: bytes=32 time<10ms TTL=128 Resposta de 123.123.123.123: bytes=32 time<10ms TTL=128 Estatísticas de Ping para 123.123.123.123: Pacotes: Enviados = 4, Recebidos = 4, Perdidos = 0 (0% de perda), Tempo de resposta aproximado em milissegundos: Mínimo = 0ms, Máximo = 0ms, Médio = 0ms C:\> Criação do nome de princípio de serviço do SQL ServerEsta é uma das partes críticas da interação de Kerberos e SQL Server. Com o SQL Server, é possível executar o serviço SQL Server em um dos seguintes: Uma conta do sistema local, uma conta de usuário local ou uma conta de usuário do domínio. Quando a instância do serviço do SQL Server inicia, ele tenta registrar seu próprio SPN no Active Directory usando a chamada API DsWriteAccountSpn. Se a chamada não tiver êxito, o seguinte aviso será registrado em Visualizar eventos:Origem: MSSQLServer EventID: 19011 Descrição: SuperSocket info: (SpnRegister) : Erro 8344. Para obter mais informações sobre a função DsWriteAccountSpn, visite o seguinte site da Microsoft (em inglês):http://msdn2.microsoft.com/en-us/library/ms676056.aspxp
(http://msdn2.microsoft.com/en-us/library/ms676056.aspx)
Explicação simplificadaSe executar o serviço SQL Server na conta do sistema local, o SPN será automaticamente registrado e o Kerberos irá interagir com êxito com o computador que está executando SQL Server. No entanto, se executar o serviço SQL Server em uma conta de domínio ou em uma conta local, a tentativa de criar o SPN irá falhar na maior parte dos casos, porque a conta de domínio e a conta local não possuem o direito de definir seus próprios SPNs. Quando a criação do SPN não tem êxito, significa que nenhum SPN foi definido para o computador que está executando o SQL Server. Se você testar usando uma conta de administrador de domínio como a conta de serviço do SQL Server, o SPN será criado com êxito, porque as credenciais do nível de administrador de domínio necessárias para a criação de um SPN estão presentes.Como uma conta de administrador de domínio não deve ser usada para executar o serviço SQL Server (para impedir risco de segurança), o computador executando o SQL Server não pode criar seu próprio SPN. Por isso, é necessário criar manualmente um SPN para o seu computador executando o SQL Server se quiser usar Kerberos ao conectar-se a um computador que está executando o SQL Server. Isso é verdade se você estiver executando o SQL Server em uma conta de usuário de domínio ou em uma conta de usuário local. O SPN criado deve ser atribuído à conta de serviço do serviço do SQL Server neste computador específico. O SPN não pode ser atribuído ao recipiente do computador a menos que o computador executando o SQL Server inicie com o sistema local. Deve existir apenas um SPN e ele deve ser atribuído ao recipiente apropriado. Em geral, esta é a conta de serviço atual do SQL Server. No entanto esta é a conta do computador com sistema local. Verificar o domínioVerifique se o domínio no qual você se conectou pode se comunicar com o domínio do qual o computador executando SQL Server pertence. Também deve haver resolução apropriada de nome no domínio.
Como configurar o serviço do SQL Server para criar SPNs de maneira dinâmica para as instâncias do SQL ServerPara configurar o serviço do SQL Server para criar SPNs de maneira dinâmica, é necessário modificar as configurações do controle de acesso da conta no serviço do diretório do Active Directory. É necessário conceder as permissões "Read servicePrincipalName" e "Write servicePrincipalName" para a conta do serviço do SQL Server.Aviso Se usar o snap-in Active Directory Service Interfaces (ADSI) Edit, o utilitário LDP ou qualquer outro cliente de LDAP versão 3 e modificar incorretamente os atributos dos objetos do Active Directory, isso poderá causar sérios problemas. Esses problemas podem exigir a reinstalação do Microsoft Windows Server 2003, do Microsoft Windows 2000 Server, do Microsoft Exchange Server 2003, do Microsoft Exchange 2000 Server, ou tanto do Windows quanto do Exchange. Não podemos garantir que os problemas decorrentes da modificação incorreta dos atributos de objetos do Active Directory possam ser resolvidos. A modificação destes atributos é de sua responsabilidade. Aviso Para conceder as permissões e direitos de usuário adequados para a conta de inicialização do SQL Server, é necessário efetuar logon como administrador do domínio ou solicitar que um administrador do domínio efetue essa tarefa. Para configurar o servidor SQL Server para criar SPNs de maneira dinâmica, execute as seguintes etapas:
Verificar o ambiente do servidorVerifique algumas configurações básicas no computador no qual o SQL Server está instalado:
Verificar o ambiente do clienteVerifique o seguinte no cliente:
Verificar o utilitário de rede para clienteO utilitário de rede para cliente (CNU) é fornecido junto com o Microsoft Data Access Components (MDAC) e é usado para configurar a conectividade para computadores que estão executando o SQL Server. Você pode usar o utilitário de rede para cliente Cliconfg.exe do MDAC para configurar a conectividade:
Informações a serem coletadas para abrir um caso no Atendimento Microsoft (PSS)Se não for possível obter a causa do problema usando as etapas para solução de problema neste artigo, colete as seguintes informações e abra um caso no Atendimento Microsoft (PSS):Para obter uma lista completa dos números de telefone do Atendimento Microsoft e informações sobre os custos de suporte, visite o seguinte site da Microsoft: http://support.microsoft.com/contactus/?ws=support
(http://support.microsoft.com/contactus/?ws=support)
Como configurar manualmente um nome de princípio de serviço para SQL ServerPara obter informações adicionais sobre com configurar manualmente um Nome de princípio de serviço para o SQL Server, clique no número abaixo para ler o artigo na Base de Dados de Conhecimento Microsoft (a página pode estar em inglês):319723
(http://support.microsoft.com/kb/319723/
)
Como usar a autenticação Kerberos no SQL Server
A Interface do Provedor de Suporte de Segurança (SSPI) é a interface para a segurança do Windows NT que é usada na autenticação do Kerberos e suporta o esquema de autenticação do provedor de suporte de segurança NTLM. A autenticação ocorre no nível do sistema operacional ao fazer logon em um domínio do Windows. A autenticação Kerberos está disponível apenas em computadores com o Windows 2000 que possuem Kerberos habilitado e que usam Active Directory. SSPI é usado apenas para conexões TCP/IP feitas usando a autenticação do Windows. (A autenticação do Windows também é conhecida como conexões confiáveis ou segurança integrada). SSPI não é usado por pipes nomeados ou conexões com vários protocolos. Por isso, é possível evitar o problema configurando seus clientes para conectar a partir de um protocolo diferente de TCP/IP. Quando um cliente SQL Server tenta usar segurança integrada sobre soquetes TCP/IP para um computador remoto executando SQL Server, a biblioteca de rede do cliente SQL Server usa a API do SSPI para realizar uma delegação de segurança. O cliente de rede do SQL Server (Dbnetlib.dll) faz uma chamada para a função AcquireCredentialsHandle e passa "negociar" para o parâmetro pszPackage. Isso notifica o provedor de segurança subjacente para realizar a delegação de negociação. Neste contexto, negociar significa tentar a autenticação Kerberos ou NTLM nos computadores com o Windows. Em outras palavras, o Windows usa delegação Kerberos se o computador de destino que executa o SQL Server possuir um SPN associado e configurado corretamente. Caso contrário, o Windows usa delegação NTLM. Observação Verifique se você não está usando uma conta chamada "SYSTEM" para iniciar qualquer um dos serviços do SQL Server (MSSQLServer, SQLServerAgent, MSSearch). A palavra-chave SYSTEM pode causar conflitos com o Centro de distribuição de chaves (KDC). Referências Para obter informações adicionais sobre a
segurança Kerberos e SSPI funcionam, clique nos números abaixo para ler os
artigos na Base de Dados de Conhecimento Microsoft (alguns artigos podem estar
em inglês): 266080
(http://support.microsoft.com/kb/266080/
)
Respostas às perguntas freqüentes sobre Kerberos
231789
(http://support.microsoft.com/kb/231789/
)
Processo de logon local para Windows 2000
304161
(http://support.microsoft.com/kb/304161/
)
Autenticação mútua do SSPI é indicada no lado do cliente, mas não no lado do servidor
232179
(http://support.microsoft.com/kb/232179/
)
Administração Kerberos no Windows 2000
230476
(http://support.microsoft.com/kb/230476/
)
Descrição de erros comuns relacionados a Kerberos no Windows 2000
262177
(http://support.microsoft.com/kb/262177/
)
Como habilitar o registro de evento Kerberos
277658
(http://support.microsoft.com/kb/277658/
)
Setspn falha se o nome de domínio for diferente do nome do NetBIOS no qual o SPN do SQL Server está registrado
244474
(http://support.microsoft.com/kb/244474/
)
Como forçar Kerberos para usar TCP no lugar de UDP no Windows Server 2003, Windows XP e no Windows 2000
326985
(http://support.microsoft.com/kb/326985/
)
Como solucionar problemas relacionados ao Kerberos no IIS
Para consultar um documento sobre segurança do
Microsoft SQL Server 2000, visite o seguinte site da Microsoft (em inglês): http://www.microsoft.com/technet/prodtechnol/sql/2000/maintain/sp3sec00.mspx
(http://www.microsoft.com/technet/prodtechnol/sql/2000/maintain/sp3sec00.mspx)
A informação contida neste artigo aplica-se a:
| Outros Recursos Outros Sites de Suporte
ComunidadesObtenha Ajuda AgoraTraduções deste artigo
|






Windows Live
Facebook
Twitter
Linkedin
Digg it
Yahoo
Delicious
StumbleUpon
Yammer
Reddit
Technorati
FriendFeed
Email
Voltar para o início